string a = "";
string b = {};
我真的找不到一个好的参考来解释它们之间的区别。编译器是否会以不同的方式看待它们?那么,为什么呢?
string a = "";
string b = {};
我真的找不到一个好的参考来解释它们之间的区别。编译器是否会以不同的方式看待它们?那么,为什么呢?
a
是使用复制初始化构建的。
b
是使用复制列表初始化构建的。
对于 std::string
,编译器会产生同样的结果;一个长度为零的字符串。
但是构建字符串的机制可能是不同的 - 编译器至少在概念上将必须遍历传递给 a 的匿名临时 const char[]。
对于其他类型可能存在差异,请查阅上述两个术语以获取更多详细信息。
string b = {};
使用类型的默认值初始化字符串,该默认值为一个空字符串。
string a = "";
使用特定的值初始化字符串,这个值恰好也是一个空字符串。
请注意,只执行string c;
也会创建一个空字符串。
strlen
或类似的函数来判断字符串是否为空。它可以进行优化,但很可能不会这样做。 - Slava