可以在类的方法中访问另一个对象的私有成员吗?


#include <string>
#include <iostream>
#include <vector>
using namespace std;
class Test {
public:
int testing() {
Test t;
return t.x;
}
private:
int x = 0;
};
int main() {
Test a;
cout << a.testing() << endl;
}

我不知道我可以在Test的类定义中访问t的私有数据成员x(Test的实例不是this)。为什么我被允许在示例代码中使用t.x?

通俗地说,c++的private是" class-private ";而不是"object-private">

作用域与源代码的词法元素相关联,而不是与运行时实体本身相关联。此外,编译后的代码几乎不知道编译源中的逻辑实体。由于这个原因,可访问性仅在词法作用域级别上强制执行。在类的作用域中,类类型的任何对象都可以访问其私有成员。

另外,否则c++将无法作为一个整体工作。如果在每个对象的基础上检查可访问性,则不能编写复制构造函数或赋值操作符。这些操作需要访问源对象的成员,以便初始化/覆盖目标对象。

相关内容

  • 没有找到相关文章

最新更新