我正在分析代码,并遇到以下结构。 Class1和Class2有什么关系? (该项目是在Qt框架上开发的。)
简化代码:
class Class1
{
...
private:
class Class2
}
class Class1::Class2: public BaseClass
{
...
}
感谢您的帮助。
答案 0 :(得分:4)
它称为nested class。它基本上是另一个类声明中的一个类声明,与在命名空间中声明一个类非常相似。
如果将其设为私有,则只有外部类可以访问它。对于组织实现细节而无需其他类或名称空间“查看”它很有用。
答案 1 :(得分:2)
Class2
是Class1
内的一个私有嵌套类,有人可能想知道为什么要使用它,有很多原因使我认为最好是PImpl习惯用语。
PIMPL idiom,隐藏实现详细信息,因此您将所有实现添加到Class::Class2
下,那么public
的{{1}}接口非常薄,换句话说,暴露得很少。