这个问题在这里已经有了答案:




8年前关闭。






我很少在常规代码中遇到类中的单个冒号
例如:

A::member():b(),c()
{
}

单冒号在这里的重要性是什么?为什么用在这里?
有时是强制性的吗?如果是,在哪些情况下?

最佳答案

此上下文中的单个冒号用于表示您正在使用 初始值设定项列表 。初始化列表用于:

  • 从派生类调用基类构造函数
  • 初始化类
  • 的成员变量

    正如其他人所指出的,初始化列表只能用于 类构造函数

    虽然也可以在构造函数的主体中初始化成员变量,但通过初始化列表这样做有几个原因:
  • 不能从构造函数的主体初始化常量指针或引用
  • 使用初始化列表通常更有效,因为它(从内存中)只调用成员的构造函数,而不是构造函数和赋值运算符,这对于非 POD 类型来说可能会很昂贵。

  • 说了这么多,你的代码格式有点奇怪。在我通常使用的代码中,初始化列表的使用会像这样缩进:
    A::A()
        :b(),
         c()
    {
    }
    

    这让我更清楚 : 与用于定义 :: 中的类成员资格的 A::A() 无关。

    关于c++ - C++ 中单冒号 ":"的重要性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2445330/

    10-13 08:15