1、任何类型的名字本身就是一个类型转换运算符;
2、形式:operator double();
不能多写,同时也不能少写;
3、例如:
#include <iostream>
using namespace std;
class Complex
{
double real,imag;
public:
Complex (double r=0,double i=0):real(r),imag(i){}
operator double(){return real;}//重载强制运算符double;
};
int main()
{
Complex c(1.2,3.4);
cout<<(double)c<<endl;//输出1.2;
double n=2+c;//没有对+进行重载,是因为c可以强制转换为double类,int类和double类是可以相加的;等价于double n=2+c.operator double();
cout<<n;//输出3.2;
return 0;
}