【发布时间】:2021-09-01 21:50:59
【问题描述】:
我在阅读 c++ 入门时遇到了一个向量列表初始化示例,其中作者提到如果无法进行列表初始化,则编译器会寻找其他方法来初始化对象。下面是一个字符串向量的例子。
vector<string> v8{10, "hi"};
这将创建一个包含 10 个元素的向量,其值为“hi”。我认为这是因为列表初始化依赖于下面的构造函数来创建向量。
vector( size_type count, const T& value, const Allocator& alloc = Allocator());
我为 String 尝试过类似的列表初始化
std::string s1{10, 'c'};
我期待它创建一个字符串“cccccccccc”,因为它有一个可用的构造函数
basic_string( size_type count, CharT ch, const Allocator& alloc = Allocator() );
但它只打印“c”?这里使用的是哪个字符串构造函数?
【问题讨论】:
-
它实际上打印了
"\nc"。注意到不一样的东西了吗?
标签: c++ c++11 constructor list-initialization stdinitializerlist