c++ - 具有成员初始化列表的显式复制构造函数中的空值

标签 c++

考虑这个复制构造函数:

myclass::myclass(const myclass& rhs):
  _a(rhs._a), _b() {
}

假设_b定义为:

int _b[100];

_b 会被初始化为什么?在列表中写入 _b() 与根本不包含 _b 之间有什么区别?

最佳答案

_b() 确保数组 _b 将为 zero-initialized ,即它的所有元素都为零。

如果在构造函数初始值设定项列表中不包含 _b() ,则 _b 将不会被初始化(技术上它称为 default-initialized )并且可能包含任何事物。在未初始化的情况下使用它会导致未定义的行为。

关于c++ - 具有成员初始化列表的显式复制构造函数中的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46776020/

相关文章:

c++ - 转发引用的右值

c++ - 在您的 VS 解决方案中创建的 .libs 如何与另一个项目链接?

c++ - 在 Ubuntu 上通过 USB 读取 Zebra 打印机状态

c++ - 启动失败。找不到二进制文件

c# - 如何从 sourcecode.c 创建 DLL 库,然后在 C# 中使用它

C++ 主函数的输入参数

c++ - 从动态加载的dll内部调用C++函数

c++ - 判断变量是否为指针的宏

c++ - N 个 child 向 parent 发送消息

c++ - stdlib.h 中的 rand 有多糟糕?