在C++ 11中,"new int [8]()"等同于"new int [8] {}"吗?

xml*_*lmx 12 c++ standards constructor c++11 list-initialization

new int[8]()等同于new int[8]{}在C++ 11?

换一种说法:

C++ 11标准是否保证每个new int[8]()new int[8]{}返回零初始化数组?

Nic*_*las 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,它告诉您"非空聚合类型的空初始化列表"意味着值初始化.

所以,是的,他们都评价同样的事情.