考虑以下代码:

template <typename T>
void f()
{T x = T();}

T = int时,x是等于0还是任意值?

奖励问题:,因此,数组(T[N]std::array<T, N>)都是唯一的类型,此类语法可能会使内容具有任意值。

最佳答案

T()进行值初始化,对除类,联合或数组以外的类型进行零初始化。 (第8.5 / 7段,项目3):“否则,该对象将被初始化为零。”对于数组,数组的每个元素都进行值初始化。

对于数组,如果内容是自动存储类,则内容将具有任意值,但如果是静态存储类,则内容将被初始化为零-即全局(当然,假设您未指定任何初始化)。

09-07 05:55