聚合初始化初始化aggrete类对象的数据成员,而聚合的值初始化将首先将其初始化为零,其中也将填充字节清零,如以下规范引用
如果T是(可能是cv限定的)非联合类类型,则每个非静态数据成员和每个基类子对象都是零初始化的,并且填充初始化为零位;
这是否意味着通常应该避免使用()
初始化聚合结构而更喜欢{}
,因为后者不必确保填充位为零?
如果上述答案为“否”,是否存在实施不填充{}
填充但()
填充的情况?在这些情况下,对于程序员来说,更好的选择是什么?
答案 0 :(得分:1)
没有。首先,我怀疑大多数编译器实际上会使用单个值(包括填充)来初始化聚合(给定常量参数)。
然而,重要的原因是,这种微观优化应该留下,直到你有测量表明存在问题(我打赌你永远不会得到那些测量)。与此同时,写出最清楚的。