如果字符串是这样定义的
std::string name;
Run Code Online (Sandbox Code Playgroud)
未初始化的字符串"name"的值是多少,它的大小是多少?
Pie*_*aud 44
因为它未初始化,所以它是被调用的默认构造函数.然后 :
空字符串构造函数(默认构造函数):
构造一个空字符串,长度为零个字符.
看看:http://www.cplusplus.com/reference/string/string/string/
编辑: 如C++ 11,§21.4.2/ 1中所述:
E ff ects:构造一个basic_string类的对象.该函数的后置条件如表63所示.
-> Table 63
+-----------------------------------------------------------------------------+
| data() | a non-null pointer that is copyable and can have 0 added to it |
+------------+----------------------------------------------------------------+
| size() | 0 |
+------------+----------------------------------------------------------------+
| capacity() | an unspeci?ed value |
+-----------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
Oli*_*rth 16
它不是未初始化的,它的默认构造函数被调用.
来自http://en.cppreference.com/w/cpp/string/basic_string/basic_string:
默认构造函数.构造空字符串.
标准(C++11,\xc2\xa721.4.2/1)描述了默认构造 a std::basic_string
(它std::string
是一个特化)的结果,如下所示:
\n\n\n[...] 类的对象
\nbasic_string
。后置条件[...]如表 63 所示。
表 63 表示:
\n\n\n\n\n
data()
可复制且可以添加 0 的非空指针
\nsize()
0
\ncapacity()
未指定的值