C 11 で中括弧で囲まれた初期化を使用する場合
C 11 では中括弧で囲まれた初期化構文が導入され、初期化のための無数のオプションが提供されました。変数。ただし、構文の選択は、特にテンプレート コンテキストにおいて、コードのセマンティクスに大きな影響を与える可能性があります。これに対処するには、一貫したガイドラインに準拠して明確さと正確さを確保することが重要です。
指導原則:
-
正確な値初期化:
- コピー (=) 初期化を使用して明示的な値をオブジェクトに割り当て、潜在的なコンストラクターのあいまいさを効果的に回避します。
- コピー初期化が使用できない場合は、中括弧を検討してください。初期化が正しいセマンティクスを維持している場合。それ以外の場合は、括弧の初期化を使用します。
-
ストレージ値の初期化:
- 中括弧の初期化を利用して、値のリストを指定します。ベクトルや複素数の要素など、オブジェクト内に格納されます。
-
記述的な値の初期化:
- 雇用オブジェクトの意図された状態を記述する値、つまり、直接保存されるのではなくその動作に影響を与えるパラメータの括弧の初期化。これには、ベクトル (サイズ) の引数と ifstream のファイル名が含まれます。
デモの例:
- 例 1- 2: コピー初期化により、正確な初期化が保証されます。
- 例 3: 中括弧の初期化は、文字列に特定の数の「x」文字を格納するのに適しています。
- 例 4: 中括弧の初期化は、初期化に使用されます。関数オブジェクト (std::function)。
- 例 5: 中括弧と括弧の両方の初期化は std::unique_ptr で機能します。
- 例 6-7: 中括弧の初期化は、より簡潔な構文を提供します。 std::locale および std::default_random_engine を初期化しています。
- 例 8: 中かっこ初期化は、より慣用的で効率的であるため、duration オブジェクトの初期化に推奨されます。
以上がC 11 で中括弧で囲まれた初期化構文を使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。