string a = "";
string b = {};
我无法找到解释它们之间差异的好参考。编译器有不同的看法吗?那么,为什么?
答案 0 :(得分:5)
a
是使用复制初始化构建的。
b
。
对于std::string
,编译器会产生相同的东西;零长度字符串。
但构造字符串的机制可能不同 - 编译器,至少在概念上,必须遍历传递给构造a的匿名临时const char []。
对于其他类型,可能存在差异;研究上述两个术语以获取更多细节。
答案 1 :(得分:2)
在这种情况下,没有区别。
string b = {};
使用类型的默认值初始化字符串,该值为空字符串。
string a = "";
使用特定值初始化字符串,该值恰好也是一个空字符串。
请注意,只需执行string c;
也会创建一个空字符串。