【发布时间】:2017-02-05 23:09:03
【问题描述】:
在 oop 中像 c++ 语言一样有“public”、“private”和“protected”。我尝试了两种简单的程序。
以下是 C++ 中的第一种情况。
class A {
public:
string name;
}
int main(void) {
A a;
a.name;
}
还有,第二种情况……
class A {
protected:
string name;
public:
string getName(void) {
return name;
}
}
int main(void) {
A a;
//a.name; //can't access
cout << a.getName();
}
两种情况下哪一种更好?
因为必须隐藏信息,我认为第二个可能更好。但在第二个中,它也可以使用函数getName() 访问“名称”变量。如果是这样,虽然第一个比第二个简单,但我为什么要使用第二个?也就是说,为什么要用protected?
【问题讨论】:
-
“因为必须隐藏信息,所以第二个可能更好” - 如果隐藏信息是目标,那么第二个是唯一甚至可以远程限定的,因此默认情况下它会赢得“更好”。