[英]What is the difference between initializing with = and initializing with {}?
[英]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.