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

Can we access private members of another object within a method of a class?

#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;
}

我不知道我可以在 class定义了Test。为什么允许我在示例代码中使用 t.x

通俗地说,C++ 的 private 是“class-private”而不是“object-private”。

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

此外,C++ 将无法作为一个整体工作,否则。如果在每个对象的基础上检查可访问性,则无法编写复制构造函数或赋值运算符。这些操作需要访问源对象的成员才能 initialize/overwrite 目标对象。