64,654
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
class CComplexNumber
{
private:
double realPart;
double imaginaryPart;
public:
CComplexNumber()
{
realPart = 0.0;
imaginaryPart = 0.0;
}
CComplexNumber(int realPart) // 隐式类型转换
{
this->realPart = (double)realPart;
imaginaryPart = 0.0;
}
CComplexNumber(double realPart, double imaginaryPart)
{
this->realPart = realPart;
this->imaginaryPart = imaginaryPart;
}
CComplexNumber operator+(CComplexNumber& aComplexNumber)
{
CComplexNumber temp;
temp.realPart = realPart + aComplexNumber.realPart;
temp.imaginaryPart = imaginaryPart + aComplexNumber.imaginaryPart;
return temp;
}
friend ostream& operator << (ostream&, const CComplexNumber&);
};
ostream& operator << (ostream& os, const CComplexNumber& aComplexNumber)
{
if(aComplexNumber.imaginaryPart == 0.0)
{
os << aComplexNumber.realPart;
}
else if(aComplexNumber.imaginaryPart > 0.0)
{
os << aComplexNumber.realPart << "+" << aComplexNumber.imaginaryPart << "i";
}
else
{
os << aComplexNumber.realPart << aComplexNumber.imaginaryPart << "i";
}
return os;
}
int main(int argc, char** argv)
{
CComplexNumber CComplexNumber1 = 2;
CComplexNumber CComplexNumber2(1.1, 2.2);
cout << CComplexNumber1 + CComplexNumber2 << endl;
return 0;
}
关于隐式类型转换可以参考:
隐式类型转换和explicit关键字的作用#include <complex>
using namespace std;
int main()
{
complex<double> c1(2,0);
return 0;
}