【发布时间】:2011-11-09 17:35:00
【问题描述】:
我从一开始就学习 C++,但我没有掌握整个字符串主题。
下面三个代码有什么区别?
-
std::string s = std::string("foo"); -
std::string s = new std::string("foo"); std::string s = "foo";
【问题讨论】:
-
注意一般要使用选项4:
std::string s("foo"); -
@JerryCoffin:这与选项 3 有何不同?
-
@MikeSeymour:它直接初始化而不是复制初始化。至少在概念上,#3 创建一个从提供的常量初始化的临时字符串,然后使用复制构造函数从该值创建
s(尽管,诚然,编译器通常会忽略它,并执行相当于直接初始化的操作)。 -
不要忘记使用最新标准的统一初始化语法的变体,即
std::string s{"foo"};