【c++】用c++實現複數類及運算子的過載
阿新 • • 發佈:2019-01-30
#include<iostream> using namespace std; class Complex { public: Complex(double real = 0.0, double image = 0.0)//建構函式 :_real(real) , _image(image) { } Complex(const Complex& c)//拷貝建構函式 { _real = c._real; _image = c._image; } Complex& operator=(const Complex& c)// =賦值運算子過載 { if (this != &c) { _real = c._real; _image = c._image; } return *this; } Complex operator+(const Complex& c)// +的過載 { Complex temp; temp._real = _real + c._real; temp._image = _image + c._image; return temp; } Complex operator-(const Complex& c)// - 的過載 { Complex temp; temp._real = _real - c._real; temp._image = _image - c._image; return temp; } Complex operator*(const Complex& c)// * 的過載 { Complex temp; temp._real = _real*c._real - _image*c._image; temp._image = _real*c._image + _image*c._real; return temp; } Complex operator/(const Complex& c)// /的過載 { Complex temp; temp._real = (_real*c._real - _image*c._image) / (c._real*c._real + c._image*c._image); temp._image = (_real*c._image + _image*c._real) / (c._real*c._real + c._image*c._image); return temp; } Complex* operator+=(const Complex& c)//+= 的過載 { _real = _real + c._real; _image =_image + c._image; return this; } Complex* operator-=(const Complex& c)//-= 的過載 { _real = _real -c._real; _image = _real - c._image; return this; } Complex *operator*=(const Complex& c)//*= 的過載 { _real = _real*c._real - _image*c._image; _image = _real*c._image + _image*c._real; return this; } Complex* operator/=(const Complex& c)// /= 的過載 { _real = (_real*c._real - _image*c._image) / (c._real*c._real + c._image*c._image); _image = (_real*c._image + _image*c._real) / (c._real*c._real + c._image*c._image); return this; } private: double _real;//複數實部 double _image;//複數虛部 }; int main()//主函式內進行測試驗證 { Complex d1(2.0, 3.0); Complex d2(4.0 ,5.0); Complex d3; //d3 = d1 + d2; //d3 = d1 - d2; //d3 = d1*d2; //d3 = d1 / d2; //d1 += d2; //d1 -= d2; //d1 *= d2; d1 /= d2; return 0; }