1.描述:
定义复数类complex,重载+、-运算符实现复数加减运算。
2.代码实现
(1)形式1:
#include<iostream>
using namespace std;
//定义complex类
class complex{
public:
//无参构造函数
complex(){}
//有参构造函数
complex(double r,double i){
real=r;
imag=i;
}
//+重载
complex operator + (complex c2);
//-重载
complex operator - (complex c2);
//输出信息
void display();
//析构函数
~complex(){}
private:
double real;//实部
double imag;//虚部
};
complex complex::operator +(complex c2){
return complex(real+c2.real, imag+c2.imag); //创建一个临时无名对象作为返回值
}
complex complex::operator -(complex c2){
return complex(real-c2.real, imag-c2.imag); //创建一个临时无名对象作为返回值
}
//输出信息实现
void complex::display(){
cout<<"("<<real<<","<<imag<<")"<<endl;
}
int main(){
complex c1(2,3);//创建complex类对象c1
complex c2(1,2);//创建complex类对象c2
complex c3;//创建complex类对象c3
cout<<"c1=";
c1.display();//输出
cout<<"c2=";
c2.display();//输出
c3=c1-c2;//计算
cout<<"c3=c1-c2=";
c3.display();//输出
c3=c1+c2;//计算
cout<<"c3=c1+c2=";
c3.display();
return 0;
}
(2)形式2:
#include <iostream>
using namespace std;
class Complex{
public:
Complex(double r = 0.0, double i = 0.0) : real(r), imag(i) { }//构造函数
friend Complex operator + (const Complex &c1, const Complex &c2);//运算符+重载
friend Complex operator - (const Complex &c1, const Complex &c2);//运算符-重载
friend ostream & operator << (ostream &out, const Complex &c);//运算符<<重载
private:
double real;//复数实部
double imag;//复数虚部
};
Complex operator + (const Complex &c1, const Complex &c2){
return Complex(c1.real + c2.real, c1.imag + c2.imag);
}
Complex operator - (const Complex &c1, const Complex &c2){
return Complex(c1.real - c2.real, c1.imag - c2.imag);
}
ostream & operator << (ostream &out, const Complex &c){
out << "(" << c.real << ", " << c.imag << ")";
return out;
}
int main(){
Complex c1(5,4),c2(2,10),c3;
cout<<"c1=";
cout<<c1<<endl;
cout<<"c2=";
cout<<c2<<endl;
c3=c1-c2;//使用重载运算符
cout<<"c3=c1-c2=";
cout<<c3<<endl;
c3=c1+c2;//使用重载运算符
cout<<"c3=c1+c2=";
cout<<c3<<endl;
return 0;
}
运行结果