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

Aggregate vs value initializing an aggregate class object with padding

本文关键字:对象 Aggregate vs value 填充 初始化      更新时间:2023-10-16

聚合初始化初始化聚合类对象的数据成员,而聚合的值初始化将首先对其进行零初始化,还将填充字节清零,如以下规范引用所示

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

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

如果上面的答案是"否",是否存在实现不使用{}填充填充而使用()填充的情况?在这些情况中,程序员最好选择什么?

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

然而,为什么不这样做的重要原因是,这种微观优化应该一直保留到你有测量结果表明存在问题为止(我打赌你永远不会得到这些测量结果)。同时,写最清楚的。