什么是操作符重载,如何进行操作符重载,为什么要进行操作符重载?

我们知道C++允许操作符的重载,那么我们不禁要问?什么是操作符重载,它到底干了些什么?
    所谓操作符重载,其实说白了就是一个怪异的函数命名,巧的很的是,这个函数的名字与我们C++内嵌的很多操作符相同。
    那,我们什么要进行操作符重载呢?
    进行操作符重载的目的,就是为了使我们的程序更具可读性,更具一致性--其实也就是使某些我们自定义的类型能够像C++内嵌的类型拥有一致的运算格式。举个简单的例子:
    struct complex // 复数
    {
    public:
        complex(int x, int y)
        {
            vx = x;
            vy = y;
        }

    public:
        int vx;
        int vy;
    };
如果,我们现在要将两个复数的对象相加,我们就必须要定义一个函数,传入这两个对象,然后,在内部按照复数的运算法相加之后,再返回一个新的对象,这个函数可能是这样的:
    complex complex_add(const complex& lhs, const complex& rhs)
    {
        complex cplx;
        cplx.vx = lhs.vx + rhs.vx;
        cplx.vy = lhs.vy + rhs.vy;
        return cplx;
    }
    每次进行加法运算的时候,总是要这样:
    complex a(5, 6), b(13, 2)
    complex sum = complex_add(a, b);
    这显然破环了读者对对complex这个美妙的数据类型的良好印象,我们需要的运算应该像这样的:
    complex sum = a + b;
    那么,此时,我们就需要对复数这个自定义的类型,进行“+”操作符的重载,当然其它的操作符也类似,那么如何实现一个操作符的重载呢?
    我们上面已经提及,操作符重载,它的实质也还是函数调用,只不过函数的名字比较特别罢了,为了给操作符重载规定一个特殊的格式,C++使用operator保留字,来修饰重载的函数名(其实就是操作符本身),那么我们刚刚的加法函数就可以写成以下形式:
    complex operator+(const complex lhs, const complex& rhs);
    就是如此的简单,乃至函数体中的任何东西都不需要改变,所以,我再罗嗦一句,所谓操作符重载,也就是将我们自定义的函数,改头换面成一个让大家,尤其是让你自己觉得比较顺眼的函数而已。
    当然,操作符重载,还有很多其他特性,如果您有什么不明白的地方,不妨说出来,我们一同讨论可以。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值