c++ - 初始化 std::string 的不同方法之间的区别

标签 c++ string initialization

最近我看到很多人像这样初始化他们的 std::string:

std::string a{ "test" }; // Yes they do it with a single value

现在我不会使用它,除非它是一个数组或传递一个初始化列表。
但这让我很好奇,这样做最好结束有什么意义吗:

std::string a = "test";
std::string a ( "test" );

毫无疑问,这三者都有效,我明白了后两者之间的区别。

它会带来某种性能提升吗?

Code

最佳答案

Does it give some kind of performance improvement?

没有。

最后,调用一个 std::string 构造函数。唯一的区别是编译器如何选择构造函数。

开发人员可能会根据重要的类的用法来选择样式,这可能是因为有初始化列表构造函数,或者是因为缩小转换或显式构造函数。然后为了一致性而对字符串使用相同的样式。

对于 std::string,编译器的所有三个路径最终都选择相同的构造函数。

关于c++ - 初始化 std::string 的不同方法之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30110325/

相关文章:

c++ - 使用Fmod Stream工作

C++ 初始值设定项列表成员仍在调用默认构造函数?

c - 在 C/C++ 中使用计数器变量访问字符串

c - 字符串的动态内存分配

java - 如何通过构造初始化HashSet值?

scala - 如何在Scala中模拟 “assign-once” var?

c++模板方法语法问题

java - 从 QBytearray 创建 QImage

c++ - 事件类需要更新

java - 计算字母数字字符的出现次数并以图形方式打印它们