#include <iostream>
using namespace std;
class Complex {
private:
//定义横纵坐标
double real;
double imag;
public:
Complex(double x=0,double y=0):real(x),imag(y) {}
void show() const; //输出数据 加const表明这个函数是一个常量成员函数 常量成员函数不可以修改对象的成员变量
friend Complex operator+(const Complex& a1, const Complex& a2) ; //重载为类的友元函数
friend Complex operator-(const Complex& a1, const Complex& a2);//重载为类的友元函数
};
/******************************************************************/
Complex operator+(const Complex& a1, const Complex& a2) {
return Complex(a1.real+a2.real,a1.imag+a2.imag);//返回的是一个对象
}
Complex operator-(const Complex& a1, const Complex& a2){
return Complex(a1.real-a2.real,a1.imag-a2.imag);//返回的是一个对象
}
void Complex::show() const{
if(imag>0)
cout<<real<<"+"<<imag<<"i"<<endl;
else if(imag==0)
cout<<real<<endl;
else
cout<<real<<"-"<<imag<<"i"<<endl;
}
/******************************************************************/
int main() {
Complex c1(5.1,3.4);
Complex c2(3.6,5.3);
Complex c;
cout<<"c1:";
c1.show();
cout<<"c2:";
c2.show();
c=c1+c2;
cout<< "c1+c2:";
c.show();
c=c1-c2;
cout<<"c1-c2:";
c.show();
return 0;
}
C++运算符的重载(内含友元函数)①
于 2024-06-20 21:29:13 首次发布