在C++中,结构体和类成员的默认值是什么?这些规则在类、结构体、基本类型等方面有何不同?是否存在规则不同的情况?
在C++中,结构体和类成员的默认值是什么?这些规则在类、结构体、基本类型等方面有何不同?是否存在规则不同的情况?
是的,有一个方法。如果你使用默认构造函数并用括号初始化对象,则POD成员将被零初始化:
someClass * p = new someClass();
C++14 8.5 11
"如果一个对象的初始化器是空括号集,即 (),则该对象将被值初始化。". 8.5 8
"对于类型为 T 的对象进行值初始化意味着:... 如果 T 是一个(可能带有 cv 限定符的)类类型,且没有用户提供或删除的默认构造函数,则该对象将被零初始化..." 8.5 6
"对于类型为 T 的对象或引用进行零初始化意味着:... — 如果 T 是一个(可能带有 cv 限定符的)非联合类类型,则每个非静态数据成员和每个基类子对象都将被零初始化..." - HolyBlackCatsomeClass p = someClass();
有相同的效果? - user3882729