Perché gli oggetti della stessa classe hanno accesso ai dati privati degli altri?
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;
}
Questo codice funziona. È perfettamente possibile per l'oggetto a accedere a dati privati dall'oggetto be restituirli. Perché dovrebbe essere così? Penso che i dati privati siano privati. (Ho iniziato cercando di capire i costruttori di copie nell'idioma pimpl, ma poi ho scoperto che non avevo nemmeno capito questa semplice situazione.)