内部类概念
如果一个类定义在另一个类的内部,这个内部的类,叫做内部类。
内部类是一个独立的类,它不属于外部类,更不能通过外部类的对象去访问内部类的成员。外部类对内部类没有任何优越的访问权限。
内部类特性
- 内部类是外部类的友元类,但是外部类不是内部类的友元。(即内部类可以访问外部类)。
- 内部类定义在外部类的public、protected、private()都是可以的;但是内部类受这些限制符的限定。
- 注意内部类可以直接访问外部类种的static成员,不需要外部类的对象/类名。
class A { class B // 内部类 { public: void Print() { A t1; cout << static_a << endl; // 内部类访问静态成员,可以突破类域进行访问 cout << A::_a << endl; // 报错 cout << t1._a << endl; //而普通成员只能通过对象进行访问 } }; private: //定义在A类下的成员变量 int _a; static int static_a; };
- 在类外定义内部类,受外部类的限制。
int main() { A::B t2; t2.Print(); return 0; }
- sizeof(外部类) = 外部类,和内部类无关。(不算静态成员)
int main() { cout << sizeof(A) << endl; // 4字节 //注意静态成员不计入里面。 return 0; }