#include<iostream>
class CComplex
{
public:
CComplex(int real, int image)
:mreal(real), mimage(image)
{}
const CComplex operator+(int val)
{
return CComplex(mreal+val,mimage);
}
const CComplex operator+(const CComplex& rhs)
{
return CComplex(mreal+rhs.mreal,mimage+rhs.mimage);
}
bool operator>(const CComplex& rhs)
{
return (mreal>rhs.mreal||((mreal==rhs.mreal)&&(mimage>rhs.mimage)));
}
bool operator == (const CComplex& rhs)
{
return mreal==rhs.mreal && mimage==rhs.mimage;
}
private:
int mreal;//实部
int mimage;//虚部
friend const CComplex operator+(int lhs,const CComplex& rhs);
friend std::ostream& operator <<(std::ostream& out,const CComplex& rhs);
friend std::istream& operator >>(std::istream& in,CComplex& rhs);
};
const CComplex operator+(int lhs,const CComplex& rhs)//_cdcl 没有this
{
return CComplex(lhs+rhs.mreal,rhs.mimage);
}
/*
std::cout和输出缓冲区 绑定
只有一个输出缓冲区 所以必须用 & 使用共同缓冲区
*/
std::ostream& operator <<(std::ostream& out,const CComplex&rhs)
{
out<<rhs.mreal<<"-";
out<<rhs.mimage;
return out;
}
std::istream& operator >>(std::istream& in,CComplex& rhs)
{
in>>rhs.mreal;
in>>rhs.mimage;
return in;
}
int main()
{
CComplex c1(10, 20);
CComplex c2 = c1 + 10;
CComplex c3 = 10 + c1;
CComplex c4 = c1 + c2;
if (c1 > c3)
{
std::cout << "c1="<<c1 << std::endl;
}
if (c2 == c3)
{
std::cout <<"c2="<< c2 << std::endl;
}
std::cin >> c1;
std::cout << "输入的c1="<<c1<< std::endl;
return 0;
}
运行结果如下: