考虑这个复制构造函数:
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/