C++使用默认值进行统一初始化
C++ uniform initialization with default values
考虑以下结构:
struct A
{
int i;
};
struct B
{
int i = 0;
};
为什么我可以使用统一初始值设定项初始化 A 类型的对象,而不能初始化 B 类型的对象?
A a{1};
B b{1}; //ill formed
当使用默认值初始化成员时,编译器在做什么?
在 C++11 中,B
不是聚合,因为它对非静态数据成员具有相等的初始值设定项。这意味着,除非提供合适的构造函数,否则不能使用大括号括起来的初始值设定项。
这一限制已在C++14中放宽。在该标准中,B
是一个聚合,初始化是有效的。
相关文章:
- 初始化右值引用成员
- 如何初始化所有值相同的 2D 数组?
- C++ 在循环中添加计数器变量并再次初始化其值
- HBOEHM 垃圾回收器未初始化的值错误和泄漏
- 复合赋值的左侧表达式是未初始化的值.计算出的值也将是垃圾
- Valgrind:使用atomic::compare_exchange_weak时,条件跳转或移动取决于未初始化的值
- 初始化器值太多
- 回文程序和条件跳转或移动取决于未初始化的值
- 访问未初始化的值,很可能在向量中
- 如何将结构变量初始化为默认值
- 为什么使用此奇怪的调用来初始化会员值的类中此功能
- 默认初始化(使用值初始化)参数包
- 在皮条类中初始化默认值的最佳位置
- 值初始化:默认初始化或零初始化
- 我可以在默认初始化和值初始化之间进行选择,也可以选择数组的全部或部分
- 默认初始化vs.值初始化
- 没有默认构造函数的初始化赋值
- 通过显式调用类构造函数与默认初始化+赋值运算符来使用对象
- 默认初始化和值初始化结构的性能不同
- 默认初始化和值初始化之间的区别