5

なぜ誰かが特定の形式の初期化を「値の初期化」と呼ぶのか、私には本当にわかりません。オブジェクトに値を与えることでオブジェクトを初期化しているように聞こえますが、それは一般的に初期化が行うことであり、初期化に使用する値については名前からは何もわかりません。

4

1 に答える 1

7

Boost value_initの書き込みは、の初期化のかなり詳細な履歴を提供します。これは、欠陥レポート 178: More on value-initializationから標準になりました。この用語は、欠陥レポート 35: Definition of default-initialization に由来するようです。これらのドキュメントのどれも、実際には用語の適切な起源を提供していませんが、いくつかの良いアイデアを提供しています:

2001 年 11 月にドラフトが公開された C++ 標準 (TC1) の最初の Technical Corrigendum では、Core Issue 178 が導入されました (もちろん、他の多くの問題の中でも)。

その号では、値の初期化という新しい概念が導入されました (ゼロ初期化の文言も修正されました)。非公式には、値の初期化はデフォルトの初期化と似ていますが、場合によっては非静的データ メンバーと基本クラスのサブオブジェクトも値で初期化されるという点が異なります。違いは、値で初期化されたオブジェクトは、データ メンバーと基本クラスのサブオブジェクトの値が不定でない (または、少なくともその可能性が低い) ことです。構築されたオブジェクトのデフォルトの場合とは異なります。(規範的な説明については、Core Issue 178 を参照してください)。

オブジェクトの値の初期化を指定するには、空のセット初期化子 () を使用する必要があります。

また、値の初期化は、 default- initialization と比較して、不確定な値を持つオブジェクトを残す可能性が低くなります。

于 2014-09-03T03:53:55.663 に答える