文字列がこのように定義されている場合
std::string name;
初期化されていない文字列「name」の値とそのサイズはどうなりますか?
初期化されていないため、呼び出されるのはデフォルトのコンストラクターです。それから:
空の文字列コンストラクター(デフォルトのコンストラクター):
長さがゼロの文字で、空の文字列を作成します。
ご覧ください: http://www.cplusplus.com/reference/string/string/string/
EDIT:C++ 11、§21.4.2/ 1に記載されているとおり:
効果:クラスbasic_stringのオブジェクトを構築します。この関数の事後条件を表63に示します。
-> Table 63
+-----------------------------------------------------------------------------+
| data() | a non-null pointer that is copyable and can have 0 added to it |
+------------+----------------------------------------------------------------+
| size() | 0 |
+------------+----------------------------------------------------------------+
| capacity() | an unspecified value |
+-----------------------------------------------------------------------------+
初期化されていないのではなく、そのdefault constructorが呼び出されます。
から http://en.cppreference.com/w/cpp/string/basic_string/basic_string :
デフォルトのコンストラクタ。空の文字列を作成します。
デフォルトで構築されたユーザー定義型は初期化されていません。デフォルトのコンストラクターは空の文字列を定義します(つまり、""
)サイズ/長さがゼロ。
標準(C++ 11、§21.4.2/ 1)は、次のように_std::basic_string
_(そのうち_std::string
_は特殊化)のデフォルト構築の結果を説明しています:
[...]クラス_
basic_string
_のオブジェクト。事後条件[...]を表63に示します。
そして表63はこう言います:
data()
コピー可能で、0を追加できるnull以外のポインターsize()
0capacity()
未指定の値