例如,我在对象初始化期间研究了这一点
string s = "Hello world";
如果 RHS 可隐式转换为 LHS 类型对象,则将调用 Copy Constructor。但是我有一个朋友很确定会char
调用将指针作为参数的构造函数。但是我告诉他char
只有在以下情况下才会调用带有指针的构造函数
string s("Hello world");
那是对的吗?
例如,我在对象初始化期间研究了这一点
string s = "Hello world";
如果 RHS 可隐式转换为 LHS 类型对象,则将调用 Copy Constructor。但是我有一个朋友很确定会char
调用将指针作为参数的构造函数。但是我告诉他char
只有在以下情况下才会调用带有指针的构造函数
string s("Hello world");
那是对的吗?
正在做
string s = "Hello world";
相当于
string s( string( "Hello world" ) );
所以构造函数采用char const*
和复制构造函数都被调用。但是,该标准允许复制省略,其中复制构造函数调用被省略(未完成)。
是和不是。两者都被调用。
string s = "Hello world";
这是复制初始化。它调用转换构造函数并构造一个临时string
from "Hellow world"
,然后将该临时构造与复制构造函数一起使用来构造s
。(有待优化)
string s("Hello world");
是直接初始化,直接调用转换构造函数,构造s
自"Hello world"
.