本章术语:
- 嵌套类(nested class):一个类可以定义在另一个类的内部
嵌套类常用于定义作为实现部分的类。
外层类的对象和嵌套类的对象是相互独立的,两者之间不共享成员。两者之间的成员访问没有特殊的权限。
嵌套类的名字在外层类作用域中是可见的,在外层类作用域之外不可见。
嵌套类实际上是在外层类中定义了一个类型成员。因此嵌套类的类型访问权限由外层类的访问控制说明符决定。
在类内声明嵌套类:
// TextQuery.hpp
class TextQuery
{
public:
class QueryResult; // 声明嵌套类
};
在类外定义嵌套类:
// QueryResult.hpp
class TextQuery::QueryResult // 定义嵌套类
{
// 嵌套类可以直接访问外层类的成员,无需作用域运算符
};
定义嵌套类的成员时,需要时刻指明外层类:TextQuery::QueryResult::<成员名>
。