试题:复数类

来源:互联网 发布:药典软件 编辑:程序博客网 时间:2024/05/05 13:13
 
#include <iostream>using namespace std;class Complex{public :Complex(double real = 0.0, double img = 0.0);Complex(const Complex & other);friend ostream & operator << (ostream & os, const Complex & obj);Complex & operator += (const Complex & other);Complex & operator -= (const Complex & other);Complex & operator *= (const Complex & other);Complex & operator /= (const Complex & other);    Complex operator + (const Complex & other);Complex operator - (const Complex & other);Complex operator * (const Complex & other);Complex operator / (const Complex & other);private :double m_real;double m_imag;};Complex::Complex(double real, double imag) : m_real(real), m_imag(imag){}Complex::Complex(const Complex & other) : m_real(other.m_real), m_imag(other.m_imag){}ostream & operator << (ostream & os, const Complex & obj){    cout << "(";if (obj.m_real > 0.000001 || obj.m_real < -0.000001){os << obj.m_real;    if (obj.m_imag > 0.000001){os << "+" << obj.m_imag << "i";}else if (obj.m_imag < -0.000001){os << obj.m_imag << "i";}}else{        os << obj.m_imag << "i";}cout << ")";return os;}Complex & Complex::operator += (const Complex & other){m_real += other.m_real;m_imag += other.m_imag;return (*this);}Complex & Complex::operator -= (const Complex & other){m_real -= other.m_real;m_imag -= other.m_imag;return (*this);}Complex & Complex::operator *= (const Complex & other){double real = m_real * other.m_real - m_imag * other.m_imag;    double imag = m_real * other.m_imag + m_imag * other.m_real;    m_real = real;    m_imag = imag;    return (*this);}Complex & Complex::operator /= (const Complex & other){    double base = (other.m_real * other.m_real + other.m_imag * other.m_imag);double real = (m_real * other.m_real + m_imag * other.m_imag) / base;    double imag = (m_imag * other.m_real - m_real * other.m_imag) / base;    m_real = real;    m_imag = imag;    return (*this);}Complex Complex::operator + (const Complex & other){return (Complex(*this) += other);}Complex Complex::operator - (const Complex & other){    return (Complex(*this) -= other);}Complex Complex::operator * (const Complex & other){    return (Complex(*this) *= other);}Complex Complex::operator / (const Complex & other){    return (Complex(*this) /= other);}Complex operator + (double real, const Complex & obj){    return (Complex(real) += obj);}Complex operator - (double real, const Complex & obj){    return (Complex(real) -= obj);}Complex operator * (double real, const Complex & obj){    return (Complex(real) *= obj);}Complex operator / (double real, const Complex & obj){    return (Complex(real) /= obj);}int main(){    Complex a(1.2, 3.4);    Complex b(1.3, 5.7);    cout << " a = " << a << endl;    cout << " b = " << b << endl;    cout << " a + b = " << (a + b) << endl;    cout << " a - b = " << (a - b) << endl;    cout << " a * b = " << (a * b) << endl;    cout << " a / b = " << (a / b) << endl;    cout << " a / 1 = " << (a / 1) << endl;    cout << " 1 * a = " << (1 * a) << endl;    cout << " a + 'a' = " << (a + 'a') << endl;    cout << " 'a' - a = " << ('a' - a) << endl;    return 0;}

原创粉丝点击