刚刚从C++11切换到C++03,我想知道,下面是否定义为始终为零初始化所有元素的数组data?
template<size_t COUNT>
class Test {
public:
uint32 data[COUNT] = {};
};发布于 2017-09-03 10:50:36
是的,它是有保证的;对于数组类型,列表初始化会转到聚合初始化:
否则,如果
T是聚合类型,则执行聚合初始化。
然后,对于聚合初始化:
如果初始化器子句的数量小于成员数或初始化程序列表完全为空,则其余成员将根据通常的列表初始化规则(对具有默认构造函数的非类类型和非聚合类执行值初始化,以及聚合的聚合初始化),由空列表初始化其余成员。
所以data的所有元素都将是值初始化,对于uint32,它们最终将是零初始化。
否则,对象将为零初始化。
https://stackoverflow.com/questions/46022598
复制相似问题