运算符重载之四则运算

 2023-05-08 12:40:14  阅读 0

在C++中,可以通过各种运算符对默认已有的数据类型进行各种运算,同时,C++还提供了运算符重载的方法。

 

通过运算符重载可以对我们自定义的类直接进行运算符的运算。

 

好比我们可以自定义一个Rectangle的类,这个类中存在长,宽,高三种属性。若是普通的运算符需要通过"."的方式或者"->"的方式一个个的进行输入或者输出。这个时候就可以使用运算符重载实现通过"<<"和">>"的方式直接进行输入和输出。

 

 

以加法运算为例,运算符重载的方法如下:

 

#include <iostream>
​
using namespace std;
​
class Rectangle {
public:
    int length;
    int width;
    int height;
    void setRect(int l, int w, int h) {
        length = l;
        width = w;
        height = h;
    }
    void show() {
        cout << length << " "
            << width << " "
            << height << endl;
    }
};
​
//Rectangle为重载类型,operator为关键字表示运算符重载,"+"为重载的符号,可以填入其他符号,括号内为参数类型
Rectangle operator+(const Rectangle& a, const Rectangle& b) {
    Rectangle sum;
    sum.length = a.length + b.length;
    sum.width = a.width + b.width;
    sum.height = a.height + b.height;
    return sum;
}
​
int main() {
    Rectangle a, b, c;
    Rectangle sum;
    a.setRect(1, 1, 1);
    b.setRect(2, 2, 2);
    c.setRect(3, 3, 3);
    sum = a + b + c;
    sum.show();
    return 0;
}

 

 

 

由上述的重载不难发现,重载的方法和函数非常相似。实际上,运算符重载在本质上就是函数的调用,也就是将函数名作为operator+的函数,无非就是使用的方法不太一样。运算符重载既可以通过调用函数实现也可以通过使用运算符实现,因此上述的main中的代码可以进行一定的修改

 

//源代码
sum = a + b + c;
//修改后
sum = operator+(operator+(a, b), c);

 

 

在上述的代码中,符号"+"实际上就是调用的operator+函数,因为这个函数具有两个参数,所以首先会计算a和b相加后的值,然后返回其值,将返回值再和c进行相加的操作。

 

 

 

同理,如果想要添加相减的代码则为:

 

Rectangle operator-(const Rectangle& a, const Rectangle& b) {
    Rectangle sum;
    sum.length = a.length - b.length;
    sum.width = a.width - b.width;
    sum.height = a.height - b.height;
    return sum;
}

 

 

读者可以依据以上知识自己试着补充一下乘法和除法的运算符重载

标签:

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码