Warum haben Objekte derselben Klasse Zugriff auf die privaten Daten des jeweils anderen?
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;
}
Dieser Code funktioniert. Es ist durchaus möglich, dass Objekt a von Objekt b aus auf private Daten zugreift und diese zurückgibt. Warum sollte das so sein? Ich würde denken, dass private Daten privat sind. (Ich habe zunächst versucht, Kopierkonstruktoren in der Pimpl-Sprache zu verstehen, aber dann habe ich festgestellt, dass ich diese einfache Situation nicht einmal verstanden habe.)