C ++ 11中new int[8]()
等同于new int[8]{}
吗?
换句话说:
C ++ 11标准是否保证new int[8]()
和new int[8]{}
中的每一个都返回一个零初始化数组?
答案 0 :(得分:16)
new int[8]()
将由[dcl.init] /17.4进行值初始化。由于它是一个数组,[dcl.init] /8.3告诉我们初始化数组的值意味着对每个元素进行值初始化。
new int[8]{}
将通过[dcl.init.list] /3.2调用数组上的聚合初始化。由于braced-init-list中没有元素,因此数组中的每个剩余元素(即:all 8)将从空的初始化列表"初始化" ([dcl.init.aggr] / 8)。在再次通过[dcl.init.list]跳舞之后,将您带到3.4,它会告诉您"来自空的初始化列表"对于非聚合类型,意味着价值初始化。
所以是的,他们都评价同样的事情。