根据公认的(也是唯一的) 这个堆栈溢出问题答案,
定义构造函数
MyTest() = default;
将替换为零初始化对象。
那为什么下面这些,
#include <iostream>
struct foo {
foo() = default;
int a;
};
struct bar {
bar();
int b;
};
bar::bar() = default;
int main() {
foo a{};
bar b{};
std::cout << a.a << ' ' << b.b;
}
产生如下结果:
0 32766
定义的两个构造函数都是默认的,对吗? 对于 POD 类型,默认的初始化是零初始化。
根据 这个问题的公认答案,
如果 POD 成员没有在构造函数中初始化,也没有通过 C + + 11初始化 在类内初始化时,它是默认初始化的。
不管堆栈还是堆,答案都是一样的。
在 C + + 98中(而不是之后) ,new int ()被指定为执行 零初始化