这是一个简单问题,可以使用类型转换函数处理。
/****将一个double型数据与Complex类数据相加******/
#include<iostream>
using namespace std;
class Complex
{
public:
Complex(){real = 0;imag = 0;}
Complex(double r, double i){real = r; imag = i;}
operator double(){return real;}
private:
double real;
double imag;
};
int main(void)
{
Complex c1(3, 4), c2(5, -10), c3;
double d;
d = 2.5 + c1;
cout << d << endl;
return 0;
}
注意:
编译系统在处理表达式2.5+c1时,发现运算符“+”的左侧是double型数据二右侧是Complex类对象,又无运算符“+”重载函数,不能直接相加,编译系统发现有对double的重载函数,因此调用这个函数,返回一个double型数据,然后与2.5相加。
重载函数都使用关键字operator,它的意思是“运算符”,因此,通常把类型转换函数也称为类型转换运算符函数,由于他也是重载函数,因此也称为类型转换运算符重载函数(或称强制类型转换运算符重载函数)。