调用拷贝构造和复制函数区别
string a("hhh");
string b = a;//调用拷贝构造
string c; c = a;//调用赋值函数
explicit作用
加在构造函数前面,对仅有一个参数或者多个参数且仅有一个参数没有默认值的构造函数不会进行隐式转换。
看一个例子
class Test
{
public:
Test(int i){}
private:
int m_a;
};
int main()
{
Test a = 10;//这里不会报错,m_a被赋值为10,如果构造函数之前加一个explicit,这里就会报错。
return 0;
}