注:1.复数的大小是通过复数的模来比较的;2.对于复数类大小的比较,可以用对“>”运算符的重载来实现。
#include<iostream>
#include<cmath>
using namespace std;
class Complex
{
public:
Complex(double real,char sign ,double imge)
:_real(real)
, _sign(sign)
, _imge(imge)
{}
bool operator>(const Complex& c)
{
double square1 = pow(_real, 2) + pow(_imge, 2);
double square1_root1 = sqrt(square1);
double square2 = pow(c._real, 2) + pow(c._imge, 2);
double square2_root2 = sqrt(square2);
if (square1_root1 > square2_root2)
{
return true;
}
else
{
return false;
}
}
void Display()
{
cout << _real << _sign << _imge << "i";
}
private:
double _real; //实部
double _imge; //虚部
char _sign; //虚部的正负
};
int main()
{
Complex c1(1.1, '+', 2.1);
Complex c2(3.1, '-', 5.6);
int ret = c1 > c2;
cout << "比较结果:"<<endl;
if (ret)
{
c1.Display();
cout << "大于";
c2.Display();
}
else
{
c1.Display();
cout << "不大于";
c2.Display();
}
cout << endl;
return 0;
}