C ++如何将c样式字符串隐式转换为字符串对象?

时间:2016-02-23 04:04:03

标签: c++ string

string s = "abc";

上述语句将首先调用string ( const char * s )构造函数,然后根据What are the differences in string initialization in C++?调用复制构造函数。 这是一个问题:C ++如何知道它应该调用string ( const char * s )来转换文字字符串" abc"到临时字符串对象?

注意: 复制构造函数不会在复制初始化中被调用。

2 个答案:

答案 0 :(得分:3)

使用语法

初始化对象
string s = "abc";

称为copy initialization

有几种情况是合法初始化。在所有情况下,RHS必须可转换为string才能生效。

字符串文字可以转换为string的一种方法是通过string的构造函数来获取char const*。这称为user defined conversion

答案 1 :(得分:1)