为什么这两行代码打印出不同的结果?
std::cout << std::string{6, 's'}
std::cout << std::string(6, 's')
最佳答案
因为 std::string
有一个constructor服用std::initializer_list
,第一个示例将使用该构造函数创建一个包含两个字符的字符串对象。这样的初始化称为 list initialization .
第二个示例将创建一个包含六个字符的字符串对象,全部初始化为's'
。这种初始化形式称为 direct initialization .
列表初始化和直接初始化可以是相同的,除了列表初始化禁止从较大类型到较小类型的可能转换,并且如此处所述,如果类具有采用 std::initializer_list< 的构造函数
.
关于c++ - 使用 "()"调用构造函数不同于 "{}",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44760139/