【问题标题】:Whats the meaning of "Class1::Class2" in C++?C ++中“Class1 :: Class2”的含义是什么?
【发布时间】:2019-03-01 05:24:21
【问题描述】:

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

简化代码:

class Class1
{
    ...

private:
    class Class2
}

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

感谢您的帮助。

【问题讨论】:

  • Class2Class1 的成员

标签: c++ class


【解决方案1】:

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

如果将其设为私有,则只有外部类可以访问它。它对于组织您的实现细节很有用,而其他类或命名空间不会“看到”它。

【讨论】:

    【解决方案2】:

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

    PIMPL idiom,隐藏了实现细节,所以你把你所有的实现都添加到Class::Class2下,那么你Classpublic接口就很薄了,也就是说你暴露的很少。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多