题目是运算符重载:
直接看代码:
complex.h
class Complex0
{
public:
Complex0(double d_real, double d_imaginary);
Complex0();
Complex0 operator+(const Complex0 &com1)const;
Complex0 operator-(const Complex0 &com1)const;
Complex0 operator*(const Complex0 &com1)const;
Complex0 operator~()const;
Complex0 operator*(double d_value)const;
friend ostream &operator<<(ostream &os,const Complex0 &com1);
friend bool operator>>(istream &os, Complex0 &com1);
private:
double m_real;
double m_img;
};
complex.cpp
Complex0::Complex0(double d_real, double d_imaginary)
{
m_real = d_real;
m_img = d_imaginary;
}
Complex0::Complex0()
{
}
Complex0 Complex0::operator+(const Complex0 & com1) const
{
Complex0 com2;
com2.m_real = m_real + com1.m_real;
com2.m_img = m_img + com1.m_img;
return com2;
}
Complex0 Complex0::operator-(const Complex0 & com1) const
{
Complex0 com2;
com2.m_real = m_real - com1.m_real;
com2.m_img = m_img - com1.m_img;
return com2;
}
Complex0 Complex0::operator*(const Complex0 & com1) const
{
Complex0 com2;
com2.m_real = m_real*com1.m_real- m_img * com1.m_img;
com2.m_img = m_real * com1.m_img+m_img*com1.m_real;
return com2;
}
Complex0 Complex0::operator~() const
{
Complex0 com2;
com2.m_real = m_real;
com2.m_img = -m_img;
return com2;
}
Complex0 Complex0::operator*(double d_value) const
{
Complex0 com2;
com2.m_real = m_real * d_value;
com2.m_img = m_img * d_value;
return com2;
}
ostream &operator<<(ostream &os, const Complex0 & com1)
{
os << "(" << com1.m_real << "," << com1.m_img << "i" << ")" << endl;
return os;
}
bool operator>>(istream & os, Complex0 &com1)
{
os >> com1.m_real >> com1.m_img;
return true;
}
main.cpp
Complex0 a(3.0, 4.0);
Complex0 c;
cout << "Enter a complex number (q to quit):\n";
while (cin >> c)
{
cout << "c is " << c << endl;
cout << "complex conjugate is " << ~c << endl;
cout << "a is " << a << "\n";
cout << "a + c is" << a + c << '\n';
cout << " a - c is" << a - c << '\n';
cout << "a * c is" << a * c << '\n';
cout << "2 * c is" << c*2<< '\n';
}
return 0;
运行效果图:
喜欢的记得点个赞哦。。
最近有博客之星的活动,大家到这里帮我点个评分,谢谢了