C++入门教程(14)运算符重载(operator+)

运算符重载赋予了自定义的类可以进行运算符操作的能力,比如自己定义了一个Positon 的坐标类,希望可以通过加减来得到新的坐标,就可以通过运算符重载来实现

其实就是实现一个 operator+函数,这个函数以operator开头,接上一个运算符,运算符重载可以提高代码的可读性,如果不使用也可通过其他函数实现,完全可以达到相同的效果。

#include <iostream>
using namespace std;

class Position{
    
    
    
public:
    int x;
    int y;
   
    Position(int x ,int y)
    {
        this->x = x;
        this->y = y;
    }
    
    
    // + 运算符重载 重载后可以进行两个对象的 + 运算
    Position operator+(const Position pos){

        Position newPos(this->x + pos.x, this->y + pos.y);

        return newPos;
    }
    
    
    // -  运算符重载 重载后可以进行两个对象的 + 运算
    Position operator-(const Position pos){

        Position newPos(this->x - pos.x, this->y - pos.y);

        return newPos;
    }
    
   
    //不用运算符重载的加法运算
    Position add(const Position pos)
    {
        Position newPos(this->x + pos.x, this->y + pos.y);
        return newPos;
    }
    
    //不用运算符重载的减法运算
    Position minus(const Position pos)
    {
        Position newPos(this->x - pos.x, this->y - pos.y);
        return newPos;
    }
    
    void print ()
    {
        cout<< "x = " << this->x << endl;
        cout<< "y = " << this->y << endl;
    }
    
};

int main(int argc, const char * argv[]) {
    // insert code here...
    std::cout << "Hello, World!\n";
    
    Position pos1(1,2);
    Position pos2(3,4);
    
    Position pos3 = pos1.add(pos2);
    Position pos4 = pos1+pos2;
    
    Position pos5 = pos2.minus(pos1);
    Position pos6 = pos2-pos1;
    
    
    cout<< "pos1 ==>"<<endl;
    pos1.print();
    cout<< "pos2 ==>"<<endl;
    pos2.print();
    cout<< "非运算符重载:pos1.add(pos2) ==>"<<endl;
    pos3.print();
    cout<< "运算符重载:pos1 + pos2 ==>"<<endl;
    pos4.print();
    
    cout<< "非运算符重载:pos1.minus(pos2) ==>"<<endl;
    pos5.print();
    cout<< "运算符重载:pos1 - pos2 ==>"<<endl;
    pos6.print();
    
    return 0;
}

运行:

Hello, World!
pos1 ==>
x = 1
y = 2
pos2 ==>
x = 3
y = 4
非运算符重载:pos1.add(pos2) ==>
x = 4
y = 6
运算符重载:pos1 + pos2 ==>
x = 4
y = 6
非运算符重载:pos1.minus(pos2) ==>
x = 2
y = 2
运算符重载:pos1 - pos2 ==>
x = 2
y = 2
Program ended with exit code: 0

运行可以看出,用运算符重载pos1+pos2得到的结果和不用运算符重载的pos1.add (pos2)的结果一致。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱我呦呦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值