ホームページ >バックエンド開発 >C++ >C の内部クラスは親クラスのプライベート変数にアクセスできますか?

C の内部クラスは親クラスのプライベート変数にアクセスできますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-29 08:04:10232ブラウズ

Can Inner Classes in C   Access Their Parent Class's Private Variables?

プライベート変数への内部クラスのアクセス

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。