プライベート変数への内部クラスのアクセス
C では、内部クラスは他のクラス内にネストされており、特別なアクセス権限を持っています。内部クラスは親クラスのプライベート変数にアクセスできますか?
答えは「はい」です。内部クラスは本質的に、内部で定義されているクラスの友達です。これは、内部クラスのオブジェクトがその親クラスのオブジェクトのプライベート メンバーに直接アクセスできることを意味します。
ただし、Java とは異なり、内部クラスのオブジェクトとオブジェクトの間に暗黙の親子関係はありません。親クラスのオブジェクト。この関係を確立するには、親クラスのオブジェクトを内部クラスのコンストラクターに明示的に渡す必要があります。
プライベート変数への内部クラスのアクセスを示すコード例を次に示します。
#include <iostream> class Outer { private: int var = 4; static const char* const MYCONST = "myconst"; public: class Inner { public: Inner(Outer& parent) : parent(parent) {} void func() { std::cout << parent.var << std::endl; } private: Outer& parent; }; }; int main() { Outer outer; Outer::Inner inner(outer); inner.func(); return 0; }
この例では、たとえば、内部クラス Inner には、親のOuter オブジェクトへの参照を引数として受け取るコンストラクターがあります。これにより親子関係が確立され、内部クラスが外部オブジェクトのプライベート変数 var にアクセスできるようになります。
Inner::func() が呼び出されると、プライベート変数 var の値が出力されます。つまり、内部クラスは親クラスのプライベート変数に実際にアクセスできるということです。
以上がC の内部クラスは親クラスのプライベート変数にアクセスできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。