同じクラスのオブジェクトがお互いのプライベートデータにアクセスするのはなぜですか?
同じクラスのオブジェクトがお互いのプライベートデータにアクセスするのはなぜですか? 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; } このコードは機能します。オブジェクトaがオブジェクトbのプライベートデータにアクセスして返すことは完全に可能です。なぜそうなのでしょうか?個人データは個人のものだと思います。(私はpimplイディオムのコピーコンストラクターを理解することから始めましたが、この単純な状況さえ理解していないことがわかりました。)