C ++中“ Class1 :: Class2”的含义是什么?

时间:2018-09-25 14:31:08

标签: c++ class

我正在分析代码,并遇到以下结构。 Class1和Class2有什么关系? (该项目是在Qt框架上开发的。)

简化代码:

class Class1
{
    ...

private:
    class Class2
}

class Class1::Class2: public BaseClass
{
    ...
}

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

它称为nested class。它基本上是另一个类声明中的一个类声明,与在命名空间中声明一个类非常相似。

如果将其设为私有,则只有外部类可以访问它。对于组织实现细节而无需其他类或名称空间“查看”它很有用。

答案 1 :(得分:2)

Class2Class1内的一个私有嵌套类,有人可能想知道为什么要使用它,有很多原因使我认为最好是PImpl习惯用语。

PIMPL idiom,隐藏实现详细信息,因此您将所有实现添加到Class::Class2下,那么public的{​​{1}}接口非常薄,换句话说,暴露得很少。