不同初始化方式的区别std::string

Difference between the different ways to initialize std::string

最近我看到很多人像这样初始化他们的 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 构造函数。唯一的区别是编译器如何选择构造函数。

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

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