概念
如果一个类定义在另一个类的内部,这个内部类就叫做内部类。内部类是一个独立的类,它不属于外部类。
特性
1.不能通过外部类的对象去访问内部类的成员。外部类对内部类没有任何优越的访问权限。2.内部类就是外部类的友元类,参见友元类的定义,内部类可以通过外部类的对象参数来访问外部类中的所有成员。但是外部类不是内部类的友元。3.内部类可以定义在外部类的public、protected、private都是可以的。4. 注意内部类可以直接访问外部类中的static成员,不需要外部类的对象/类名。如果外部类中的static成员和内部类的成员变量名字冲突也不会报错,优先使用内部类的成员变量,如果想使用外部类的static成员直接使用类名访问即可。5.sizeof(外部类)=外部类,外部类的大小和内部类毫无关系。
使用
class A { private:static int k;int h; public:class B // B天生就是A的友元{public:int k = 5;void foo(const A& a){cout << A::k << endl;//OKcout << a.h << endl;//OK}}; }; int A::k = 1; int main() {A::B b;b.foo(A());return 0; }