explicit修饰构造函数,作用是使得该构造函数只能显式调用,不能进行隐性调用。
如class test{
public:
explicit test(int n):m(n){}
private:
int m;
};
test t1=12;//编译错误
test t2(12);//成功。
如不加explicit,则12被隐式转换为调用test构造函数,构造一个临时对象,用默认的拷贝构造函数进行初始化。
explicit修饰构造函数,作用是使得该构造函数只能显式调用,不能进行隐性调用。
如class test{
public:
explicit test(int n):m(n){}
private:
int m;
};
test t1=12;//编译错误
test t2(12);//成功。
如不加explicit,则12被隐式转换为调用test构造函数,构造一个临时对象,用默认的拷贝构造函数进行初始化。