转换构造函数:
基本数据类型(或者对象) -----转换-----> 对象(或另一个对象)
类型转换函数:
对象 ----转换-----> 基本数据类型
举例说明:
以Complex复数这个类为例子
class.h
扫描二维码关注公众号,回复:
1021015 查看本文章
class Complex { public: Complex(double x1, double y1);//普通构造函数 Complex(double t);//转换构造函数 operator double();//类型转换函数 void show();//输出复数 private: double real; double imag; }; Complex::Complex(double x1, double y1) { real = x1; imag = y1; } inline Complex::Complex(double t) { real = t; imag = 0; cout << this << endl;//输出正在调用的对象的地址 show(); } inline Complex::operator double() { cout << "类型转换"<<this << endl; return real; } inline void Complex::show() { cout << real << ',' << imag << endl; }
Complex c1(1.1);//将1.1转换为对象c1,所以两个对象地址一样 Complex* pc1 = &c1; cout << pc1 << endl;
转换构造函数2:
Complex c2 = 2.2;//将2.2转换为对象c2,所以两个对象地址一样 Complex* pc2 = &c2; cout << pc2 << endl;
转换构造函数3:
Complex c3(0.0, 0.0); c3 = 3.3;//将3.3转换成临时Complex类对象,再进行对象之间的赋值。地址不同 Complex* pc3 = &c3; cout << pc3 << endl;
类型转换函数4:
Complex c1(1.1, 2.2); Complex c2(3.3, 4.4);//首先,目前的+不能进行对象之间的加,系统会自动进行转换成 Complex c3 = double(c1) + c2;//c1进行显式类型转换,c2进行隐式类型转换。c1->1.1,c2->3.3. Complex* pc3 = &c3; //相加就是4.4,再将4.4转换成c3对象 cout << pc3 << endl;
综合转换:
Complex c5 = 6.6 + Complex(7.7);//6.6不变,7.7->对象->7.7
Complex* pc5 = &c5; //再将最后的计算结果直接转换成c5对象
cout << pc5 << endl;
cout << "-------------------" << endl;