一个类定义在另一个类的内部,则前者称为嵌套类或者是嵌套类型。嵌套类相当于外层类的一个类型成员。
可以类比命名空间的嵌套。
嵌套类是一个独立的类,与外层类基本没什么关系。外层类的对象和嵌套类的对象是相互独立的。在嵌套类的对象中不包含任何外层类定义的成员;类似的,在外层类的对象中也不包含任何嵌套类定义的成员。
嵌套类的名字在外层类作用域中是可见的 , 在外层类作用域之外不可见。和其他嵌套的名字一样,嵌套类的名字不会和别的作用域中的同一个名字冲突。
嵌套类中成员的种类与非嵌套类是一样的。和其他类类似,嵌套类也使用访问限定符来控制外界对其成员的访问权限。外层类对嵌套类的成员没有特殊的访问权限,同样,嵌套类对外层类的成员 也没有特殊的访问权限。
嵌套类可以直接使用外层类的成员,无须对该成员的名字进行限定。
class Fucker{
public:
class InnerFucker; //嵌套类的前置声明,后面去定义
public:
int shit;
};
//可以在外部定义嵌套类
class Fucker::InnerFucker{ //嵌套类的定义。
public:
static int stati_mem;
};
//在外部定义嵌套类的成员函数。
Fucker::InnerFucker::InnerFucker(){ //嵌套类成员的定义(构造函数的定义)
}
//在外部定义嵌套类的静态成员
int Fucker::InnerFucker::static_mem = 1024;