繁体   English   中英

初始化空字符串的“”和{}有什么区别?

[英]What's the difference between “” and {} for initializing an empty string?

string a = "";
string b = {};

我无法找到解释它们之间差异的好参考。 编译器有不同的看法吗? 那么为什么?

a使用复制初始化构建。

b使用复制列表初始化来构造。

对于std::string ,编译器将生成相同的东西; 一个零长度的字符串。

但构造字符串的机制可能不同 - 编译器,至少在概念上,必须遍历传递给构造a的匿名临时const char []。

对于其他类型,可能存在差异; 研究上述两个术语以获取更多细节。

在这种情况下,没有区别。

string b = {};

使用类型的默认值初始化字符串,默认值为空字符串。

string a = "";

使用特定值初始化字符串,该值恰好也是一个空字符串。

注意只做string c; 还会创建一个空字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM