c++ - 在 C++ 中对构造函数使用初始值设定项有什么好处?

标签 c++

Sphere() : theRadius(1.0)
{
}

为什么用初始化器编写的构造函数(上图)比在其主体中初始化数据成员的构造函数(下图)更可取?

Sphere()
{
     theRadius = 1.0;
}

最佳答案

所有成员在进入构造函数主体之前都已初始化。如果您没有在初始化列表中提供初始化程序,那么它们是默认构造的。

在您的第一个示例中,发生了以下情况:

  • theRadius 初始化为 1.0

在您的第二个示例中,发生以下情况:

  • theRadius 已初始化
  • 1.0 被复制到 theRadius

对于像整数和 float 这样的简单类型,这无关紧要。但是,如果您的成员是具有非平凡构造函数/复制构造函数的对象,那么使用初始化列表方法会更有效。

关于c++ - 在 C++ 中对构造函数使用初始值设定项有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1803079/

相关文章:

c++ - QLineEdit 与 QValidator : React to editing finished regardless of input validity?

c++ - 预置和附加到 cstring

javascript - 无法将带有ajax调用的c++程序发送到php

c++ - 循环 : future iterations overwrite results of previous iterations 中的 If-else 条件

c++ - Intel TBB 并行化开销

c++ - 我应该使用指向 std::string 的指针吗

c++ - 在 Ignite 节点上获取本地分区

c++ - 保存并重新启动暂停的 gdb session

c++ - 使用迭代器遍历列表?

html - 适用于 Mac 和 PC 的一般开发人员的基本软件综合列表