c++ - 省略数据成员对象的初始化列表条目

标签 c++

<分区>

我读到强烈建议在创建类时初始化所有数据成员,无论类型如何,并且构造函数的初始化列表是执行此操作的最佳位置。

作为对象的数据成员呢?假设该对象有一个足够的默认初始化器,从初始化器中省略它们是否被认为是好的做法?

如:

class A{
private:
  AnotherClass B;
  int x;
public:
  A():x(5){} //B is never explicitly initialized
};

最佳答案

如果您不使用成员初始化列表来初始化用户定义类型的成员,那么将调用该特定类型的默认构造函数来初始化成员对象。

因此,只要您的成员具有可用的默认构造函数并且这是您的意图,就完全没问题。

Is it considered good practice to omit them from the initializer?

这是一个选择和偏好的问题。对我来说,成员初始化列表更直观,所以我更喜欢它们。

关于c++ - 省略数据成员对象的初始化列表条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14661076/

相关文章:

c++ - 使用继承函数而不是基础函数(不是抽象的)

c++ - cpp 中的宏编译错误 (Visual Studio 2012)

c++ - 将 std::array 推回到 std::vector N 次的优雅方式

c++ - 将结构从文件写入/读取到 std::vector<>

c++ - 点的轮廓匹配算法

c++ - 将非托管 C++ 代码编译为托管代码

c++ - 将 int 转换为 base 2 cstring/string

c++ - 为 C++ 应用程序创建故障转储报告

C++11:何时调用 move ctor/operator=?

java - OpenCV Mat::Mul 的参数