成为私人成员(C 类)意味着什么

What does it mean to be a private member (c++ classes)?

本文关键字:意味着 什么 成员      更新时间:2023-10-16

我对C 类中的私人数据成员有些困惑。我是编码的新手,仍在我的"课程"一章中间,所以我可能会领先自己,但是我觉得我缺少一条信息:

假设我有此代码:

class clocktype;
{ 
  public:
          void setTime(int,int,int);
          .
          .
          .
   private:
          int hr;
          int min;
          int sec;
     };

我创建了一个对象myClock。

clocktype myclock;
myclock::setTime(hour,minute,min)
{
  if (0<= hour && hour < 24)
  hr = hour;
  if (0<= minute && minute <60)
  min = minute;
  if ( 0<= second && second<60)
  sec = second;
 }
 myclock.setTime(5,24,54);

我的教科书说我不能这样做:

myclock.hr = 5;

因为hr是私人数据成员,而对象myclock仅访问公共成员。但是,这实际上不是我在setTime功能中所做的事情吗?我了解我正在通过我的公共成员功能访问myclock.hr。但是我仍在为背后的逻辑挣扎。那么,成为私人数据成员意味着什么?

这里的主要思想是封装。区分私人数据成员和公共设置方法将使您可以更改clocktype类的实现,而不需要使用它来重新编译其代码的每个人。假设您决定更改clocktype实现,以存储从一天开始的秒数。您需要做的就是重新实现setTime方法,而您不必触摸公共接口:

class clocktype;
{ 
    public:
        void setTime(int,int,int);
    private:
        int secFromMidnight;
};
clocktype myclock;
myclock::setTime(hour, minute, second)
{
    secFromMinight = second + (minute * 60) + (hour * 24 * 60);
}

C 中的类成员默认为私有,这意味着您无法通过任何外部对象访问它们(主要)。如果您定义[不仅声明]类中的Settime功能,这是私人成员的朋友函数,您也可以在MAIN中使用对象来初始化私人成员。

class clocktype;
{ 
 private:
          int hr;
          int min;
          int sec;
  public:
          void setTime(int hour,int minute,int min)
 {
  if (0<= hour && hour < 24)
  hr = hour;
  if (0<= minute && minute <60)
  min = minute;
  if ( 0<= second && second<60)
  sec = second;
  }
 };

只需声明一个对象(主)并调用settime,它将起作用。

settime是类clocktype的一部分,因此它可以访问私人成员。

私人通常意味着它是私人的类 - 含义,含义,只有班级中的成员才能访问它。

在编写函数或类(元素/符号)中有两件事要做:

  1. 如何使用元素,这称为接口,这是使用IT
  2. 对程序员暴露的内容
  3. 元素的作用,这称为实现,它不一定会暴露,并且可以改变,因为它通常可以存在问题,并且可以随着时间的推移(理想情况下)开发(理想情况下)

这个想法仅仅是类似于您的函数setTime()的接口可以在类内部完成多个事情。将来的设定时间还需要更多的呼叫或更复杂的事物,除了更改某些变量,或者对于其他操作系统可能会有所不同。现在,您的班级用户收到了带有错误修复的新版本的库,这不会有所作为,因为他仍在使用相同的参数调用相同的功能,而对他的唯一区别是该函数的作用是固定的。因此,他不必重新设计自己的代码来适合您的新修复程序,并且您可以阻止他使用班级的变量,因为那不是您在设计中计划的。您计划他专门使用setTime()

因此,基本上,这只是交换库的程序员的内部内容。这只是编写代码的一种干净的方式。最终,对于该程序运行时的最终结果,无论一切是否公开,都不会有任何不同。换句话说:这是编程游戏,我们按照我们创建的规则进行演奏,以确保清洁代码和长期稳定性。