定义在另一个类的内部的类被称为嵌套类,嵌套类和外层类之间的成员名不能冲突。嵌套类的名字仅在外层类作用域中可见,其他作用域不可见。嵌套类符合public、private、protected的访问规则。
嵌套类的声明
class A
{
public:
class B;//后续定义,先声明后使用
void print()
{
cout<<"hello c++"<<endl;
}
}
//嵌套类的定义
class A::B
{
public:
void show()
{
cout<<"hello world"<<endl;
}
private:
string Name;
static int num;
}
//类外定义成员,构造
A::B::B(string name):Name(name){};
//定义静态成员
int A::B::num=1024;
嵌套类可以访问外层类的成员。外层类将嵌套类作为返回值或者参数时,必须指明其为嵌套的,也就是需要指明外部类的作用域限定前缀。