c – POD成员默认初始化没有大括号

给定代码
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…

在第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)…

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...