C++(例题集—简单解析-多态)

运算符重载

例题7-1

#include<iostream>
using namespace std;
class Complex{
    double real;
    double imag;
public:
    Complex(double r1=0,double img=0):real(r1),imag(img){}
    friend Complex add(const Complex &left,const Complex &right);
    void show(){
        cout<<real<<","<<imag<<endl;
    }
};
Complex add(const Complex <,const Complex& rt){
    return Complex(lt.real+rt.real,lt.imag+rt.imag);
}
int main(){
    Complex c1(1,2),c2(3,4),c;
    //c=c1+c2;
    c=add(c1,c2);
    c.show();
    return 0;
}

例题7-2

#include<iostream>
using namespace std;
class Complex{
    double real;
    double imag;
public:
    Complex(double r=0,double i=0):real(r),imag(i){}
    friend Complex operator +(const Complex &L,const Complex &R);
    void show(){
        cout<<real<<","<<imag<<endl;
    }
};
Complex operator +(const Complex &L,const Complex &R){
    return Complex(L.real+R.real,L.imag+R.imag);
}
int main()
{
    Complex c1(1,2),c2(3,4),c;
    c=c1+c2;
    c.show();
    return 0;
}

例题:重载+

#include<iostream>
using namespace std;
class Complex{
    double real;
    double imag;
public:
    Complex(double r=0,double i=0):real(r),imag(i){}
    Complex operator +(const Complex &r);
    void show(){
        cout<<"("<<real<<","<<imag<<")\n";
    }
};
Complex Complex::operator +(const Complex &r){
    return Complex(real+r.real,imag+r.imag);
}
int main()
{
    Complex c1(1,2),c2(3,4),c;
    c=c1+c2;
    c.show();
    return 0;
}

例题:重载复数==:

#include<iostream>
using namespace std;
class Complex{
    double real;
    double imag;
public:
    Complex(double r1=0,double img=0):real(r1),imag(img){}
    friend bool operator ==(const Complex &L,const Complex &R);
};
bool operator==(const Complex &L,const Complex &R){
    return (L.real==R.real&&L.imag==R.imag);
}
int main()
{
    Complex c1(1,2),c2(3,4),c3(1,2);
    if(c1==c2){
        cout<<"C1==C2"<<endl;
    }else{
        cout<<"C1!=C2"<<endl;
    }
    if(c1==c3){
        cout<<"C1==C3"<<endl;
    }else{
        cout<<"C1!=C3"<<endl;
    }
    return 0;
}

把上面的重载变成    成员函数:

#include<iostream>
using namespace std;
class Complex{
    double real;
    double imag;
public:
    Complex(double r1=0,double img=0):real(r1),imag(img){}
    bool operator ==(const Complex &R);
};
bool Complex :: operator==(const Complex &R){
    return (real==R.real&&imag==R.imag);
}
int main()
{
    Complex c1(1,2),c2(3,4),c3(1,2);
    if(c1==c2){
        cout<<"C1==C2"<<endl;
    }else{
        cout<<"C1!=C2"<<endl;
    }
    if(c1==c3){
        cout<<"C1==C3"<<endl;
    }else{
        cout<<"C1!=C3"<<end
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值