给定代码:
- struct Test {
- int a = 1;
- int b = 2;
- };
- Test test1;
- Test test2{};
对于test2,我确定,test2.a == 1和test2.b == 2.对于test1(没有{}),它是否保证(或不相同)?
解决方法
这条线
- Test test1;
等效于使用默认构造函数的初始化,在没有手写的具有显式初始化列表且没有Test()= deleted的情况下;最终会将两个成员设置为指定的初始值1和2.
“默认构造函数”是可以不带参数调用的构造函数,这与上述语句完全相同.
您可以阅读standard中默认构造函数的规则 – 转到§12.1第4节:
A default constructor for a class X is a constructor of class X that can be called without an argument…
@H_404_21@在第5节中进一步说明:
A default constructor that is defaulted and not defined as deleted is implicitly defined when it is odrused (3.2) to create an object of its class type (1.8)…
@H_404_21@