gpt4 book ai didi

c++ - C++ 中单冒号 ":"的重要性

转载 作者:行者123 更新时间:2023-12-03 06:52:38 25 4
gpt4 key购买 nike

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




9年前关闭。




Possible Duplicate:
What is this weird colon-member syntax in the constructor?



我很少在常规代码中遇到类中的单个冒号
例如:
A::member():b(),c()
{
}

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

最佳答案

此上下文中的单个冒号用于表示您正在使用 初始化列表 .初始化列表用于:

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

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

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

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

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

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

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com