Por que objetos da mesma classe têm acesso aos dados privados uns dos outros?
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. É perfeitamente possível para o objeto a acessar dados privados do objeto be retorná-los. Por que deveria ser assim? Eu acho que os dados privados são privados. (Comecei tentando entender os construtores de cópia no idioma pimpl, mas depois descobri que nem mesmo entendia essa situação simples.)