作为私有成员(c++类)意味着什么?
我对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
。但我仍在为背后的逻辑而苦苦挣扎。那么,成为私有数据成员意味着什么?
解决方案
这里的主要思想是encapsulation。区分私有数据成员和公共setter方法将允许您更改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);
}
相关文章