我对值初始化和默认初始化非常困惑。 特别是当他们开始使用不同的标准C ++ 03和C ++ 11 (和C ++ 14 )时。 我引用并试图扩展一个非常好的答案Value- / Default- / Zero-Init C ++ 98和C ++ 03在这里使它更通用,因为如果有人可以帮助填写需要的差距有一个很好的概述什么时候发生? 简而言之,通过实例的全面洞察力: 有时,新运算符返回的内存将被初始化,有时它不会取决于新build的types是POD(普通旧数据) ,还是包含POD成员的类,并且正在使用编译器生成的默认构造函数。 在C ++ 1998中有两种types的初始化:零和默认 在C ++ 2003中第三种types的初始化,增加了值初始化。 在C ++ 2011 / C ++ 2014中,只添加了列表初始化,并且value- / default- / zero-initialization的规则有所改变。 承担: struct A { int m; }; struct B { ~B(); int m; }; struct […]