考虑以下代码:
template <typename T>
void f()
{T x = T();}
当
T = int
时,x
是等于0
还是任意值?奖励问题:,因此,数组(
T[N]
和std::array<T, N>
)都是唯一的类型,此类语法可能会使内容具有任意值。 最佳答案
T()
进行值初始化,对除类,联合或数组以外的类型进行零初始化。 (第8.5 / 7段,项目3):“否则,该对象将被初始化为零。”对于数组,数组的每个元素都进行值初始化。
对于数组,如果内容是自动存储类,则内容将具有任意值,但如果是静态存储类,则内容将被初始化为零-即全局(当然,假设您未指定任何初始化)。