函数的嵌套声明
我们都知道cpp不像Java、python类的函数支持函数嵌套定义。
像这样的行为在cpp中是非法的:
void a()
{
void b()
{
cout << "b" << endl;
}
cout << "a"<<endl;
b();
}
但是在cpp中是支持函数的嵌套声明的,例子如下:
void a()
{
void b();
cout << "a"<<endl;
b();
}
void b()
{
cout << "b"<<endl;
}
int main()
{
a();
}
这是合法的,并且可以正常运行,而且你会发现当去掉b函数在a内的声明后,编译器会抛出找不到b标识符的错误。
类的嵌套定义
在cpp中,在类内定义另一个类是合法的:
class a
{
public:
class b
{
public:
int d;
};
};
int main()
{
a c;
}
嵌套类的作用范围和继承机制和普通的成员没有任何区别:
如果一个嵌套类在另一个类的私有部分声明的,嵌套类对于这个类是可见的,对于外界是不可见的。
如果一个嵌套类在另一个类的公有部分声明的,则允许在这个类和外界使用这个嵌套类。
值得注意的是
嵌套类的私有成员变量和成员函数在声明嵌套类的类中是不可见的