侯捷C++复现:一个复数类

一个实现了简单+,+=,<<,等简单操作的无指针普通类:

头文件如下所示:

//
// Created by 浅笑 on 2022/11/26.
//

#ifndef CLION_PJ_COMPLEX_H
#define CLION_PJ_COMPLEX_H

class complex{
public:
    complex(const double r=0,const double i=0):re(r),im(i){}
    complex& operator +=(const complex&);
    complex& operator =(const complex&);

    double real() const {return re;}
    double image() const {return im;}
private:
    double re, im;


friend complex& __doapl(complex* , const complex&);
};

complex& __doapl(complex* ths, const complex& x){
    ths->re += x.re;
    ths->im += x.im;
    return *ths;
}

complex& complex::operator+=(const complex &x) {
    return __doapl(this, x);
}

complex& complex::operator=(const complex &x) {
    this->re=x.real();
    this->im=x.image();
    return *this;
}
// 重载+操作
complex operator +(const complex& c1, const complex& c2){
    return complex(c1.real()+c2.real(), c1.image()+c2.image());
}
complex operator +(const complex& c1, const double& c2){
    return complex(c1.real()+c2, c1.image());
}
complex operator +(const double& c1, const complex& c2){
    return complex(c1+c2.real(), c2.image());
}

inline double real(const complex &x){
    return x.real();
}
inline double image(const complex &x){
    return x.image();
}
// 重载输出
std::ostream& operator<<(std::ostream& os, const complex& x){
    return os<<"("<<real(x)<<","<<image(x)<<")";
}

#endif //CLION_PJ_COMPLEX_H

测试一下:

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<ctime>
#include<vector>
#include<algorithm>
#include<cstring>
#include<set>
#include<map>
#include<queue>
#include<string>

#include "complex.h"
using namespace std;



int main()
{
    complex c1(1,2);
    double a,b,c,d;
    cin>>a>>b>>c>>d;
    c1=complex(a,b);
    complex c2=complex(c,d);
    cout<<"c1:"<<c1<<endl;
    cout<<"c2:"<<c2<<endl;
    cout<<"c1+c2="<<(c1+c2)<<endl;
    cout<<"c1+=c2"<<(c1+=c2)<<endl;
    cout<<"c1:"<<c1<<endl;
    cout<<"c2:"<<c2<<endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值