嵌套类
在另一个类中声明的类被称为嵌套类(nested class),它通过提供新的类型类作用域来避免名称混乱。包含类的成员函数可以创建和使用被嵌套类的对象;而仅当声明位于公有部分,才能在包含类的外面使用嵌套类,而且必须使用作用域解析操作符。
class Queue
{
// class scope definitions
// Node is a nested class definition local to this class
class Node
{
public:
Node():
};
...
};
定义嵌套类的方法,必须指出Node类是在Queue类中定义的:
Queue::Node::Node(){...}
嵌套类和访问权限
1.作用域
如果嵌套类是在另一个类的私有部分声明的,则只有后者知道它。比如上面的Node类就是声明在Queue类的私有部分(类的默认访问权限是私有),因此Queue成员可以使用Node对象和指向Node对象的指针,但是程序的其他部分甚至不知道Node类的存在。
对于从Queue类派生而来的类,Node类也是不可见的,因为派生类不能直接访问基类的私有部分。