C++ の基本構文 - 内部クラス

序文: 内部クラスは、名前が示すとおり、クラス内で定義されたクラスです。多くの人は、それらが外部クラスに属していると考えるでしょう。実際には、そうではありません。これらは 2 つの独立したクラスですが、内部クラスは、クラス ドメインによって制限されます。外部クラス。

1. コンセプト

クラスが別のクラス内で定義されている場合、そのクラスは内部クラスと呼ばれます。ただし、内部クラスは外部クラスに属さない独立したクラスであり、外部クラスのオブジェクトを介して内部クラスのメンバーにアクセスすることはできません。外部クラスには、内部クラスへの優れたアクセス権はありません。

class A {
    
    
public:
	class B {
    
    
	private:
		int _b = 2;
	};
private:
	int _a = 1;
};

int main()
{
    
    
	A aa; //A类实例化对象aa
	//B bb; //报错,B类受A类类域限制
	A::B bb; //B类实例化对象bb
	return 0;
}

2. 特徴

1. 内部クラスは、外部クラスで public、protected、または private として定義できます。
2.内部クラスは外部クラスの静的メンバーに直接アクセスできることに注意してください。、外部クラスのオブジェクト/クラス名は必要ありません。
3.sizeof(external class) = 外部クラス、内部クラスとは関係ありません、それらが 2 つの独立したクラスであることを証明しました
4 内部クラスは外部クラスのフレンドクラスですしたがって、内部クラスは外部クラスのオブジェクト パラメーターを通じて外部クラスのすべてのメンバーにアクセスできますが、外部クラスは内部クラスのフレンドではありません。

1. 内部クラスと外部クラスは互いに独立しています

class A {
    
    
public:
	class B {
    
    
	private:
		int _b = 2;
		int _c = 3;
	};
private:
	int _a = 1;
};

int main()
{
    
    
	cout << sizeof(A) << endl;
	cout << sizeof(A::B) << endl;
	return 0;
}

コンソール出力は次のとおりです。
ここに画像の説明を挿入
B は A の内部クラスですが、A のメモリは 4 バイト、B のメモリは 8 バイトであることがわかります。A と B は独立したクラスであることを説明します。

2. 内部クラスは外部クラスのフレンドクラスです

class A {
    
    
public:
	class B {
    
    
	publicvoid FuncB()
		{
    
    
			A aa; // 在B类中调用A类
			aa._a = 2; //访问A类成员变量
		}
	private:
		int _b = 2;
	};
	void FuncA() {
    
    
		B bb;
		// bb._b = 2; A不是B的友元类,不能通过B对象参数访问B中成员
	}
private:
	int _a = 1;
};

3. 例

Niuke.com のトピック (ハイパーリンク)を例として、内部クラスの使用法を示します。
ここに画像の説明を挿入

答え:

関連する知識ポイント:コンストラクター静的メンバー、内部クラス

class Solution {
    
    
    class sum
    {
    
    
        public:
        sum()  //构造函数
        {
    
      
            _ret += _tmp;
            _tmp++;
        }
    };
public:
    int Sum_Solution(int n) {
    
    
        sum arr[n];
        return _ret;
    }
    static int _ret; //静态成员变量
    static int _tmp;
};
int Solution::_ret = 0; //静态成员变量在类外定义初始化
int Solution::_tmp = 1;

記事末尾BB: ご不明な点がございましたら、お気軽にコメント欄にメッセージを残してください。記載内容に誤りがある場合は、コメント欄でご指摘ください。ブロガーが作成します。見たらすぐに修正。最後に、作成するのは簡単ではありませんが、友人に役立つ場合は、ブロガーに「いいね」や注目を与えたいと思います。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_73390155/article/details/132365022