Mengapa objek dari kelas yang sama memiliki akses ke data pribadi satu sama lain?
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;
}
Kode ini berfungsi. Sangat mungkin bagi objek a untuk mengakses data pribadi dari objek b dan mengembalikannya. Mengapa harus demikian? Menurut saya, data pribadi itu pribadi. (Saya mulai dengan mencoba memahami konstruktor salinan dalam idiom pimpl, tetapi kemudian saya menemukan bahwa saya bahkan tidak memahami situasi sederhana ini.)