#include <iostream>
using namespace std;
class Complex
{
public:
Complex(){real=0;image=0;}
Complex(double r){real=r;image=0;}
Complex(double r,double i){real=r;image=i;}
operator double(){return real;} //重载类型转换运算符
friend Complex operator+(double,Complex &); //定义友元函数,重载类型运算符+号可以让double型数和复数相加返回复数
void display();
private:
double real;
double image;
};
Complex operator+(double i,Complex &j)
{
return Complex(i+j.real,j.image);
}
void Complex::display()
{
cout << "(" << real << "," << image << "i)" << endl;
}
int main()
{
Complex c1(3,4),c2;
Complex d1;
d1=2.5+c1;
cout << "d1=" << d1 << endl;//这里d1转换为double类型,输出double类型
d1.display();
c2=Complex(d1);
c2.display();
return 0;
}
结果:
d1=5.5
(5.5,4i)
(5.5,4i)
Hello world!
在Code::Blocks运行,具体内容参照谭浩强C++程序设计以及上机指导:第4章第6题。