序文: 内部クラスは、名前が示すとおり、クラス内で定義されたクラスです。多くの人は、それらが外部クラスに属していると考えるでしょう。実際には、そうではありません。これらは 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 {
public:
void 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: ご不明な点がございましたら、お気軽にコメント欄にメッセージを残してください。記載内容に誤りがある場合は、コメント欄でご指摘ください。ブロガーが作成します。見たらすぐに修正。最後に、作成するのは簡単ではありませんが、友人に役立つ場合は、ブロガーに「いいね」や注目を与えたいと思います。