1

次のコードを検討してください。

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

が任意の値に等しいか、または等しい場合T = intは?x0

おまけの質問:したがって、配列 (T[N]との両方std::array<T, N>) は、そのような構文が内容に任意の値を残す可能性がある唯一の型です。

4

2 に答える 2

3

T()クラス、共用体、または配列以外の型のゼロ初期化を提供する値の初期化を提供します。(§8.5/7 箇条書き 3): 「それ以外の場合、オブジェクトはゼロで初期化されます。」配列の場合、配列の各要素は値が初期化されます。

配列の場合、コンテンツは自動ストレージ クラスの場合は任意の値になりますが、静的ストレージ クラスの場合はゼロに初期化されます。つまり、グローバルです (もちろん、初期化を指定しない場合)。

于 2013-08-18T04:27:20.087 に答える