¿Por qué los objetos de la misma clase tienen acceso a los datos privados de los demás?
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;
}
Este código funciona. Es perfectamente posible que el objeto a acceda a datos privados del objeto by los devuelva. ¿Por qué esto es así? Creo que los datos privados son privados. (Comencé tratando de entender los constructores de copias en el idioma pimpl, pero luego descubrí que ni siquiera entendía esta simple situación).