Skip to content

Latest commit

 

History

History
40 lines (28 loc) · 1.02 KB

File metadata and controls

40 lines (28 loc) · 1.02 KB

19.5 嵌套类

本章术语:

  • 嵌套类(nested class):一个类可以定义在另一个类的内部

嵌套类常用于定义作为实现部分的类。

外层类的对象和嵌套类的对象是相互独立的,两者之间不共享成员。两者之间的成员访问没有特殊的权限。

嵌套类的名字在外层类作用域中是可见的,在外层类作用域之外不可见。

嵌套类实际上是在外层类中定义了一个类型成员。因此嵌套类的类型访问权限由外层类的访问控制说明符决定。

在类内声明嵌套类:

// TextQuery.hpp
class TextQuery
{
public:
    class QueryResult; // 声明嵌套类
};

在类外定义嵌套类:

// QueryResult.hpp
class TextQuery::QueryResult // 定义嵌套类
{
    // 嵌套类可以直接访问外层类的成员,无需作用域运算符
};

定义嵌套类的成员时,需要时刻指明外层类:TextQuery::QueryResult::<成员名>

练习