为什么同一类的对象可以访问彼此的私有数据?
class TrivialClass {
public:
TrivialClass(const std::string& data) :
mData(data) {};
const std::string& getData(const TrivialClass& rhs) const {
return rhs.mData;
};
private:
std::string mData;
};
int main() {
TrivialClass a("fish");
TrivialClass b("heads");
std::cout << "b via a = " << a.getData(b) << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这个代码有效.对象a完全可以从对象b访问私有数据并将其返回.为什么会这样?我认为私人数据是私人的.(我开始试图理解pimpl习语中的复制构造函数,但后来我发现我甚至不理解这种简单的情况.)
class Person
{
private BankAccount account;
Person(BankAccount account)
{
this.account = account;
}
public Person someMethod(Person person)
{
//Why accessing private field is possible?
BankAccount a = person.account;
}
}
Run Code Online (Sandbox Code Playgroud)
请忘记设计.我知道OOP指定私有对象是该类的私有对象.我的问题是,为什么OOP设计为私有字段具有类级访问而不是对象级访问?