class A
{
private:
double a;
int b;
public:
A(double a);
A(double a,int b);
上面的函数如果构造函数只有一个参时,则需要进行隐式的类型转化,也就是先将传递的参数转换成double型,然后再赋值给类。然而,有的时候不需要这种转换,可以在声明中使用explicit,则构造函数就不会用于隐式的转换了。
显示的转换需要在前面加上类型函数,例如st=int(lb);
2:转换函数:能否将上述的对象转化为double呢?例如:A a(12.5);double d=a;
可以这样做,但不是使用构造函数,而是用转换函数。转换函数是用户定义的强制类型转换,可以像使用强制类型转换那样使用它们。例如:
A a (12.2);
double a1=double (a);
double a2=(double) a;
如何定义转换函数呢?转换函数的原型是:operator typeName();
1):转换函数必须是类方法。
2):转换函数不能指定返回类型。
3)