概念
如果一個類定義在另一個類的內部,這個內部類就叫做內部類。內部類是一個獨立的類,它不屬于外部類。
特性
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; }