【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

结论

代码示例,有问题留言。


  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

idiot5liev

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值