作用:
转换构造函数(conversion constructor function) 的作用是将一个其他类型的数据转换成一个类的对象?
定义:
当一个构造函数只有一个参数,而且该参数又不是本类的const引用时,这种构造函数称为转换构造函数。
转换构造函数是对构造函数的重载。
MyObject(double v) : value(v){};
使用:
MyObject obj
obj = 1.5; // 调用转换构造函数将1.5转换为MyObject类型
double d;
d = c1 + 1.1 // 先调用类型转换函数将c1转为double类型,然后在与1.1相加!
MyObject 类对具有双重身份,既是MyObject类对象,又可作为double类型数据, MyObject类对象只有在需要时才进行转换,要根据表达式的上下文来决定?转换构造函数和类型转换运算符有一个共同的功能: 当需要的时候,编译系统会自动调用这些函数,建立一个无名的临时对象(或临时变量)?
注意事项:
- 借助转换构造函数不仅可以将一个标准类型数据转换成类对象,也可以将另一个类的对象转换成另一个类对象?
- 如果不想让转换构造函数生效,也就是拒绝其它类型通过转换构造函数转换为本类型,可以在转换构造函数前面加上explicit
explicit MyObject(double v):value(v){};