复数运算符的重载
代码
#include"pch.h"
#include <iostream>
using namespace std;
class Complex {
public:
Complex (double real = 0,double imgic = 0):_real(real),_imgic(imgic){}
Complex operator + (const Complex &num);
Complex operator - (const Complex &num);
Complex operator * (const Complex &num);
Complex operator / (Complex &num);
Complex operator ~ ();
friend ostream & operator <<(ostream &out, const Complex &num)
{
if (num._imgic < 0.0)
{
out << "(" << num._real << " - " << -num._imgic << "i" << ")";
}
else
{
out << "(" << num._real << " + " << num._imgic << "i" << ")";
}
return out;
}
friend istream & operator >>(istream &in, Complex &num)
{
in >> num._real;
in >> num._imgic;
return in;
}
private:
double _real;
double _imgic;
};
Complex Complex::operator +(const Complex &num)
{
return Complex(_real + num._real, _imgic + num._imgic);
}
Complex Complex::operator -(const Complex &num)
{
return Complex(_real - num._real, _imgic - num._imgic);
}
Complex Complex::operator *(const Complex &num)
{
return Complex((_real * num._real-_imgic * num._imgic), (_imgic * num._real + _real * num._imgic));
}
Complex Complex::operator /(Complex &num)
{
return Complex(((*this * (~num))._real) /((num*(~num))._real), ((*this*(~num))._imgic) / ((num*(~num))._real));
}
Complex Complex::operator ~()
{
return Complex(_real,-_imgic);
}
int main()
{
Complex complex1, complex2, complex3;
cin >> complex1 >> complex2;
cout << "These two complex Numbers are:" << endl << complex1 << endl << complex2<<endl;
cout << complex1 << " + "<<complex2 << "=" << complex1 + complex2<<endl;
cout << complex1 << " - " << complex2 << "=" << complex1 - complex2 << endl;
cout << complex1 << " * " << complex2 << "=" << complex1 * complex2 << endl;
cout << complex1 << " / " << complex2 << "=" << complex1 / complex2 << endl;
return 0;
运行结果