嵌套类
在C++中, 可以将类声明放在另一个类中. 在另一个类中声明的类被称为嵌套类(nested class), 它通过提供新的类型类作用域来避免名称混乱. 包含类的成原函数可以创建和使用被嵌套类的对象; 而仅当声明位于共有部分, 才能在包含类的外面使用嵌套类, 而且必须使用作用域解析运算符.
对类进行嵌套和包含并不同, 包含意味着将类对象作为另一个类的成员, 而对类进行嵌套不创建类成员, 而是定义了一种类型, 该类型仅在包含嵌套类声明的类中有效.
们先看一个之前的一个例子, 自定义实现的简化版的队列:
class Queue
{
private:
// 这里Node是一个嵌套的结构体定义
// Item是一个别名, 详见之前的笔记
struct Node {Item item; struct Node * next;}
...
};
由于结构是一种其成员在默认情况下为共有的类, 所以Node实际上是一个嵌套类.
在之前的笔记中创建Node对象的方法是这么写的:
bool Queue::enqueue(const Item & item)
{
if(isfull())
return false;
Node * add = new Node;
add->item = item;
add->next = NULL:
...
}
现在我们将Node由struct改为嵌套类:
class Queue
{
// 嵌套类
class Node
{
public:
Item item;
Node * next;
// 构造函数, 将item赋值为