·目的:
·实现类型的自动转换
·特点:
·只有一个参数
·不是复制构造函数
·编译系统会自动调用---转换构造函数---建立一个 临时对象/临时变量
class Complex{
public:
double real, imag;
Complex(int i){ //类型转换构造函数
cout << "IntConstructor called" << endl;
real = i; imag = 0;
}
Complex(double r, double i){
real = r;
imag = i;
}
};
int main(){
Complex c1(7, 8);//调用普通构造函数
Complex c2 = 12;//等号是初始化,不是赋值,初始化过程中调用类型转换构造函数时
//不会对应生成一个临时的对象,只会直接把12作为参数传给Complex(int i)函数
c1 = 9;//9被自动转换成一个临时Complex对象
//这是一个赋值语句,直接能赋值,是因为编译器会自动调用类型转化构造函数
cout << c1.real << "," << c1.imag << endl;
return 0;
}
输出:
IntConstructor called
IntConstructor called
9,0