C++——类和对象(Part3)-5. 内部类

时间:2024-11-27 09:20:14

• 如果⼀个类定义在另⼀个类的内部,这个内部类就叫做内部类。内部类是⼀个独立的类,跟定义在全局相比,它只是受外部类类域限制和访问限定符限制,所以外部类定义的对象中不包含内部类。

• 内部类默认是外部类的友元类。

• 内部类本质也是⼀种封装,当A类跟B类紧密关联,A类实现出来主要就是给B类使用,那么可以考虑把A类设计为B的内部类,如果放到private/protected位置,那么A类就是B类的专属内部类,其 他地方都用不了。

#include<iostream>
using namespace std;
class A
{
private:
 static int _k;
 int _h = 1;
public:
 class B // B默认就是A的友元
 {
public:
 void foo(const A& a)
  {
  cout << _k << endl; //OK
  cout << a._h << endl; //OK
  }
 };
};
int A::_k = 1;
int main()
{
 cout << sizeof(A) << endl;
 A::B b;
 A aa;
 b.foo(aa);
 return 0;
}

4
1
1

C:\code\test_c\test_11_19\x64\Debug\test_11_19.exe (进程 43464)已退出,代码为 0 (0x0)。
按任意键关闭此窗口. . .