不同初始化方式的区别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" );
毫无疑问,这三个都有效,我明白了后两者之间的区别。
它会带来某种性能提升吗?
Does it give some kind of performance improvement?
没有
最后,调用了一个 std::string
构造函数。唯一的区别是编译器如何选择构造函数。
开发人员可能会根据 类 的用法选择一种风格,这很重要,可能是因为有初始化列表构造函数,或者是因为缩小转换或 explicit
构造函数。为了保持一致性,然后对字符串使用相同的样式。
对于std::string
,编译器的所有三个路径最终都选择相同的构造函数。
最近我看到很多人像这样初始化他们的 std::string
:
std::string a{ "test" }; // Yes they do it with a single value
现在我不会使用它,除非它是一个数组或传递一个初始化列表。
但这让我很好奇,这样做最好结束有什么意义吗:
std::string a = "test";
std::string a ( "test" );
毫无疑问,这三个都有效,我明白了后两者之间的区别。
它会带来某种性能提升吗?
Does it give some kind of performance improvement?
没有
最后,调用了一个 std::string
构造函数。唯一的区别是编译器如何选择构造函数。
开发人员可能会根据 类 的用法选择一种风格,这很重要,可能是因为有初始化列表构造函数,或者是因为缩小转换或 explicit
构造函数。为了保持一致性,然后对字符串使用相同的样式。
对于std::string
,编译器的所有三个路径最终都选择相同的构造函数。