explicit
class complex{
public:
complex(double); //defines double-to-complex conversion
complex(double,double);
.......
}
complex z1 = 3.14; //ok convert
complex z2 = complex(1.2,3.4);
class Vector
{
explicit Vector (int){cout << "调用了int构造函数" << endl;}
)
Vector v = 10; // 加了后就不能调用了int 的构造函数
Vector v0(10); //ok
只具有一个参数的构造函数定义了一个从其参数类型向该函数所属类型的转换。
由explicit修饰的构造函数只能用于对象的构造而不能用于隐式的转换。
当我们拿不定主意时候,最好将所有具有一个参数的构造函数定义为显示构造函数。

浙公网安备 33010602011771号