C++:内部类
如果一个类定义在另一个类的内部,这个类就叫做内部类。内部类不属于外部类,更不能通过外部类去访问内部类的对象,外部类对内部类没有任何的优待访问权限。
内部类其实相当于特殊的友元类,外部类不是内部类的友元类。
class A
{public:class B{};
};
特征:
1.内部类可以定义在外部类的任何地方
2.内部类可以直接访问外部类中的static成员,不需要外部类的对象/类名。
3.sizeof(外部类)=外部类,和内部类没有任何关系。
内部类受外部类的访问限定符和类域的限制
A a1;
B b1;//1
1是不可以这样用的,因为内部类受外部类的类域限制
A::B b1;
这样可以。
以上是内部类定义在外部类的公有部分的前提,如果是私有则不能直接访问类域定义了,需要通过外部类的函数来定义了。
class A
{
public:void f(){B b1;}private:class B{};
};