标签:
#define _CRT_SECURE_NO_WARNINGS 1 #ifndef __COMPLEX_H__ #define __COMPLEX_H__ #include<iostream> using namespace std; class Complex { public: Complex(double real,double image); void Print(); bool operator==(const Complex &c); Complex& operator++(); //前置++ Complex operator++(int); //后置++ Complex& operator--(); //前置-- Complex operator--(int); //后置-- bool operator>(const Complex &c); Complex& operator=(const Complex &c); Complex operator+(const Complex &c); Complex& operator+=(const Complex &c); Complex operator-(const Complex &c); Complex& operator-=(const Complex &c); Complex operator*(const Complex &c); Complex& operator*=(const Complex &c); Complex operator/(const Complex &c); Complex& operator/=(const Complex &c); private: double _real; double _image; }; #endif //__COMPLEX_H__
#define _CRT_SECURE_NO_WARNINGS 1 #include"Complex.h" Complex::Complex(double real=0.0,double image=0.0) //构造函数 :_real(real) ,_image(image) {} void Complex::Print() { if(_image == 0.0) //虚部为0 { cout<<_real<<endl; } else { cout<<_real<<"+"<<_image<<"*i"<<endl; } } Complex Complex::operator+(const Complex &c) { Complex tmp; tmp._real=_real+c._real; tmp._image=_image+c._image; return tmp; } Complex Complex::operator-(const Complex &c) { Complex tmp; tmp._real=_real-c._real; tmp._image=_image-c._image; return tmp; } Complex Complex::operator*(const Complex &c) { Complex tmp; tmp._real=_real*c._real-_image*c._image; tmp._image=_real*c._image+_image*c._real; return tmp; } Complex Complex::operator/(const Complex &c) { Complex tmp; double t=c._real*c._real+c._image*c._image; tmp._real=(_real*c._real-_image*(-c._image))/t; tmp._image=(_real*(-c._image)+_image*c._real)/t; return tmp; } Complex& Complex::operator+=(const Complex &c) { _real+=c._real; _image+=c._image; return *this; } Complex& Complex::operator-=(const Complex &c) { _real-=c._real; _image-=c._image; return *this; } Complex& Complex::operator*=(const Complex &c) { Complex tmp(*this); //拷贝构造函数 _real=tmp._real*c._real-_image*c._image; _image=tmp._real*c._image+tmp._image*c._real; return *this; } Complex& Complex::operator/=(const Complex &c) { Complex tmp(*this); double t=c._real*c._real+c._image*c._image; _real=(tmp._real*c._real-tmp._image*(-c._image))/t; _image=(tmp._real*(-c._image)+tmp._image*c._real)/t; return *this; } bool Complex::operator==(const Complex &c) { return (_real == c._real)&& (_image == c._image); } Complex& Complex::operator++() //前置++ { _real++; _image++; return *this; } Complex Complex::operator++(int) //后置++ { Complex tmp(*this); //拷贝构造函数暂存this所指向的值 _real++; _image++; return tmp; } Complex& Complex::operator--() //前置-- { _real--; _image--; return *this; } Complex Complex::operator--(int) //后置-- { Complex tmp(*this); _real--; _image--; return tmp; } bool Complex::operator>(const Complex &c) { return (_real > c._real)&& (_image > c._image); } Complex& Complex::operator=(const Complex &c) { if(this != &c) { _real=c._real; _image=c._image; } return *this; }
#define _CRT_SECURE_NO_WARNINGS 1 #include"Complex.h" void test1() { Complex c1(1.0,2.0); Complex c2(3.0,6.0); Complex c3=c1+c2; Complex c4=c1-c2; Complex c5=c1*c2; Complex c6=c1/c2; cout<<"c1:"; c1.Print(); cout<<"c2:"; c2.Print(); cout<<"c1+c2:"; c3.Print(); cout<<"c1-c2:"; c4.Print(); cout<<"c1*c2:"; c5.Print(); cout<<"c1/c2:"; c6.Print(); } void test2() { Complex c1(1.0,2.0); Complex c2(3.0,6.0); cout<<"c1:"; c1.Print(); cout<<"c2:"; c2.Print(); //Complex c3=c1+=c2; //cout<<"c1+=c2:"; //c1.Print(); //Complex c3=c1-=c2; //cout<<"c1-=c2:"; //c3.Print(); //c1.Print(); //Complex c3=c1*=c2; //cout<<"c1*=c2:"; //c3.Print(); //c1.Print(); Complex c3=c1/=c2; cout<<"c1/=c2:"; c3.Print(); } void test3() { Complex c1(1.0,2.0); Complex c2(3.0,6.0); Complex c3(c1); //c1.Print(); //1+2*i //Complex c4=++c1; //c4.Print(); //2+3*i //c1.Print(); //2+3*i //c1.Print(); //1+2*i //Complex c5=c1++; //c5.Print(); //1+2*i //c1.Print(); //2+3*i //c2.Print(); //3+6*i //Complex c4=--c2; //c4.Print(); //2+5*i //c2.Print(); //2+5*i c2.Print(); //3+6*i Complex c4=c2--; c4.Print(); //3+6*i c2.Print(); //2+5*i } void test4() { Complex c1(1.0,2.0); Complex c2(3.0,6.0); Complex c3(c1); //cout<<(c1 == c3)<<endl; //1 == //cout<<(c1 == c2)<<endl; //0 == //cout<<(!(c1 == c2))<<endl; //1 != //cout<<(c2 > c1)<<endl; //1 > //cout<<(!(c2 > c1))<<endl; //0 <= c3.Print(); //1+2*i c3=c2; c3.Print(); //3+6*i } int main() { //test1(); //test2(); test3(); //test4(); system("pause"); return 0; }
标签:
原文地址:http://blog.csdn.net/qq_34328833/article/details/52115612