같은 클래스의 개체가 서로의 개인 데이터에 액세스 할 수있는 이유는 무엇입니까?
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 관용구에서 복사 생성자를 이해하려고 시도했지만이 간단한 상황을 이해하지 못했다는 것을 발견했습니다.)