为什么同一类的对象可以访问彼此的私有数据?
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;
}
这段代码可行。对象a可以访问对象b的私有数据并将其返回,这完全是可能的。为什么会这样?我认为私有数据应该是私有的。(我最开始尝试理解pimpl惯用法中的复制构造函数,但后来发现我甚至不理解这个简单情况。)
TrivialClass
的实现工作是要理解如何正确地操作TrivialClass::mData
。 - David Schwartz