【发布时间】:2018-02-23 02:15:31
【问题描述】:
我对 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。但我仍在为这背后的逻辑而苦苦挣扎。那么,成为私有数据成员意味着什么?
【问题讨论】:
-
这是一个访问级别的类比,它应该可以帮助你cseducators.stackexchange.com/a/1246
-
here 和所有优秀的 c++ 教科书都回答了您的问题。
-
请注意,
myclock.hr = 5可以让您将hr设置为任何值。您的setTime函数对您可以设置的值进行了限制。它维持着invariant。 -
在你的书中多读一点。 :-)
-
@BoPersson 是的,当我阅读更多内容时,它开始变得更有意义:) 但是我从这里得到的一些答案帮助我在教科书中给出的简单示例之外进行了可视化。