给定代码:
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)…
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。