Это не совсем правильное объяснение вопроса.
у объекты одного класса имеют доступ к личным данным друг друга?
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, но потом обнаружил, что даже не понимаю этой простой ситуации.)