【发布时间】:2019-06-06 07:19:54
【问题描述】:
假设我们有一个类,它有一个 private 变量和一个 max 方法,该方法接受一个与类相同类型的参数:
class A
{
private:
int Number;
public:
A() : Number(0) {}
A(int val) : Number(val) {}
int max(A b)
{
if( Number > b.Number )
return Number;
return b.Number;
}
};
让我感到奇怪的是,max 方法中的参数b 可以访问private 变量Number。但是在main 函数中,我们无法访问参数Number(正如预期的那样,因为它被声明为private)
int main()
{
A a;
a.Number = 0; // ERROR
return 0;
}
所以我的问题是为什么类中的函数在声明private 时可以访问变量Number。
【问题讨论】:
-
这就是 private 的用途。外部无权访问,内部有
-
在面向对象的语言中,对象可以访问同一类的其他对象的私有成员是相当普遍的
-
您的问题从有关变量范围的内容开始。私有变量不是作用域变量。另外,请详细说明您看到的问题。
-
因为否则私有变量将毫无意义。