Чому об’єкти одного класу мають доступ до приватних даних один одного?
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, але потім я виявив, що навіть не розумію цієї простої ситуації.)