Aggregate vs value使用填充初始化聚合类对象

时间:2016-07-18 16:12:48

标签: c++ c++14 padding

聚合初始化初始化aggrete类对象的数据成员,而聚合的值初始化将首先将其初始化为零,其中也将填充字节清零,如以下规范引用

  

如果T是(可能是cv限定的)非联合类类型,则每个非静态数据成员和每个基类子对象都是零初始化的,并且填充初始化为零位;

这是否意味着通常应该避免使用()初始化聚合结构而更喜欢{},因为后者不必确保填充位为零?

如果上述答案为“否”,是否存在实施不填充{}填充但()填充的情况?在这些情况下,对于程序员来说,更好的选择是什么?

1 个答案:

答案 0 :(得分:1)

没有。首先,我怀疑大多数编译器实际上会使用单个值(包括填充)来初始化聚合(给定常量参数)

然而,重要的原因是,这种微观优化应该留下,直到你有测量表明存在问题(我打赌你永远不会得到那些测量)。与此同时,写出最清楚的。