11.运算符重载的基本概念

1.运算符重载的需求

C++预定义的运算符,只能用于基本数据类型的运算:整型,实型,字符型,逻辑型。不能用于对象的运算,有时候又需要对象之间的运算。】

在数学上,两个符数可以直接进行±等运算。但是在c++中,直接将+或者-用于复数对象是不允许的。
有时候希望,让对象也能通过运算符进行计算。这样代码更加简介,更加易于理解。
例如;complex_a和complex_b是两个复数对象;
求两个复数的和,希望能直接写:

complex_a+complex_b

2:运算符重载:

运算符重载,就是对已有的运算符赋予多重的含义,使同一运算符作用域不同类型的数据时导致不同类型党的行为。

运算符重载的目的是:扩展c++中提供的运算符的适用范围,使之能作用于对象。
同一个运算符,对不同类型的操作数,所发生的行为不同。
例如:complex_a+complex_b 生成新的复数对象。

3.运算符重载的形式

运算符重载的实质就是函数重载。
可以重载为普通函数,也可以重载为成员函数。
把含运算符的表达式转换为运算符函数的调用。
把运算符的操作数转换成运算符函数的参数。
运算符被多次重载时,根据实参的类型决定调用哪个运算符函数。

形式:
返回值类型 operator 运算符(形参表)
{
···
}

例子:

class complex
{
    public:
        double real,imag;
        complex(double r=0.0,double i=0.0):real(r),imag(i){}
        complex operator -(const complex &c);
};
complex operator + (const complex &a,const complex &b)
{
    return complex(a.real+b.real,a.imag+b.imag);  //返回一个临时对象
}
complex complex::operator -(const complex &c)
{
    return complex(real -c.real,imag-c.imag); //返回一个临时对象
}
//重载为成员函数时,参数个数为运算符目数减一
//重载为普通函数时,参数个数为运算符目数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值