//实现复数的加减乘等运算(运算符重载为全局函数)
#include <iostream>
using namespace std;
class Com
{
private:
int a, b;
public:
Com(int i=0, int j=0) :a(i), b(j) {};
friend Com operator+(Com &p,Com& q);
friend Com operator-(Com &p, Com& q);
friend Com operator*(Com &p, Com& q);
void operator=(Com &p);//=运算符只能用成员函数方式重载
void show();
};
Com operator+(Com &p, Com& r)
{
Com q;
q.a = r.a + p.a;
q.b = r.b + p.b;
return q;
}
Com operator-(Com &p, Com& r)
{
Com q;
q.a = r.a - p.a;
q.b = r.b - p.b;
return q;
}
Com operator*(Com &p, Com& r)
{
Com q;
q.a = r.a * p.a + r.b * p.b;
q.b = r.b * p.a + r.a * p.b;
return q;
}
void Com::operator=(Com &p)
{
a = p.a;
b = p.b;
// return *this;
}
void Com::show()
{
cout << "a= " << a << endl;
cout << "b= " << b << endl;
cout << a << "+" << b << "i" << endl;
}
int main()
{
Com a(1, 1);
Com b(2, 2);
// Com c = a.operator=(b);
// c.show();
a.operator=(b);
a.show();
Com d = operator+(a, b);
d.show();
}
计算机小白,希望和大家共同进步!有错误还请批评指出,慢慢进步!