2

T型の要素を作成し、それを構築してから配列に追加する必要があるというテンプレートの問題が発生しました。

構成部分の実行方法がわかりません。

私たちはただやりますか

T element;

また

T element = T();
4

1 に答える 1

2

あなたTがクラス型であることを意図している場合、私はこのバージョンを言います:

T element;

要素がデフォルトで構築可能である限り、推奨されます (そうでない場合は、上記のアプローチはどれも機能しません)。2 番目のバージョンの使用:

T element = T();

コピー構築またはムーブ構築Tを取得するタイプの一時オブジェクトを作成することを意味します。elementまた、タイプが移動可​​能でない場合、これはコンパイルされません。

一方、要素が基本型の場合は、T element = T()値の初期化が提供されます。したがって、たとえば whenT = intelementゼロで初期化されますが、最初のケースでは初期化されません。

C++ 11 では、(コメントでmfontaniniによって提案されているように) 最善の方法は、統一された初期化構文で直接初期化を使用することです (コンパイラがそれを関数宣言として解析しないようにするため)。

T element{};

これにより、クラス型のデフォルト構築と基本型の値初期化が提供されます。

于 2013-04-23T18:38:19.777 に答える