Bootstrap

【C++】运算符重载实现复数类的加减乘除(code c++)


程序代码

实现复数类的加减乘除 code c++

#include <iostream>
using namespace std;

class Complex {
public :
    Complex() : real(0), img(0) {}
    Complex(int real, int img) : real(real), img(img) {}
    Complex(const Complex &c) : real(c.real), img(c.img) {}
    Complex &operator=(const Complex &c);
    Complex operator+(const Complex &c);
    Complex &operator+=(int t);
    Complex operator-(const Complex &c);
    Complex operator*(const Complex &c);
    Complex operator/(const Complex &c);
    int get_real() const { return this->real; }
    int get_img() const { return this->img; }
private:
    friend ostream &operator<<(ostream &out, const Complex &c);
    friend Complex operator+(const Complex &c, const Complex &c1);
    int real, img;
};

Complex &Complex::operator=(const Complex &c) {
    this->real = c.real;
    this->img = c.img;
    return *this;
}

Complex Complex::operator+(const Complex &c) {
    Complex t(this->real + c.real, this->img + c.img);
    return t;
}

Complex operator+(const Complex &c, const Complex &c1) {
    Complex t(c.real + c1.real, c.img + c1.img);
    return t;
}

Complex &Complex::operator+=(int t) {
    this->real += t;
    this->img += t;
    return *this;
}

Complex Complex::operator-(const Complex &c) {
    Complex t(this->real - c.real, this->img - c.img);
    return t;
}

Complex Complex::operator*(const Complex &c) {
    Complex t(this->real * c.real - this->img * c.img, this->real * c.img + this->img * c.real);
    return t;
}

Complex Complex::operator/(const Complex &c) {
    int real = (this->real * c.real + this->img * c.img) / (c.real * c.real + c.img * c.img);
    int img = (this->img * c.real - this->real * c.img) / (c.real * c.real + c.img * c.img);
    Complex t(real, img);
    return t;
}

ostream &operator<<(ostream &out, const Complex &c) {
    out << "(" << c.real << ", " << c.img << ")";
    return out;
}

int main() {
    Complex c1;
    Complex c2(1, 2);
    Complex c3(c2);
    cout << "c1: " << c1 << endl;
    cout << "c2: " << c2 << endl;
    cout << "c3: " << c3 << endl;
    cout << "c2 + c3: " << c2 + c3 << endl;
    cout << "c2 * c3: " << c2 * c3 << endl;
    cout << "c2 / c3: " << c2 / c3 << endl;
    cout << "---------------" << endl;
    c2 += 2;
    cout << "c2 += 2: " <<c2 << endl;
    cout << "c2.get_real(): " << c2.get_real() << "; "; 
    cout << "c2.get_img(): " << c2.get_img() << endl;
    return 0;
}

运行结果

c1: (0, 0)
c2: (1, 2)
c3: (1, 2)
c2 + c3: (2, 4)
c2 * c3: (-3, 4)
c2 / c3: (1, 0)
---------------
c2 += 2: (3, 4)
c2.get_real(): 3; c2.get_img(): 4

结论

代码示例,有问题留言。


悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;