在C++中,类型的名字本身也是一种运算符,即强调类型转换运算符。
强制类型转换运算符是单目运算符,也可以被重载,但只能重载为成员函数,不能重载为全局函数。
经过适当重载后,“(类型名)对象”这个对对象进行强制类型转换的表达式就等价于“对象operator 类型名()”,即变成对运算符函数的调用。
operator double()
{
return real;
}
double n = 12+c;
==>double n =12+c.operator double();
*有了对double运算符的重载,本该出现double类型变量或常量的地方,如果出现了一个myComplex类型的对象,那么就会调用该对象的operator double成员函数,然后取其返回值使用。
*/
#include<iostream>
using namespace std;
class myComplex
{
double real,imag;
public:
myComplex(double r=0,double i=0):real(r),imag(i){};
operator double()
//重载强制类型转换运算符double
{
return real;
}
};
int main()
{
myComplex c(1.2,-3.4);
cout<<(double)c<<endl;
double n=12+c;
//实部相加
cout<<n<<endl;
return 0;
}