c++学习--多态--运算符重载(1)

一、+运算符重载

1.考虑运算符重载函数参数个数--是否为成员函数

  因为该函数时成员函数,到时候是通过对象调用该函数,即P1+P2相当于 P1.operrator+(P2);

  此处P1地址会传给operator函数中的this指针,此处省略了this指针。

     return Point(this->m_x + point.m_x, this->m_y + point.m_y);

 

2.考虑保留运算符特性--是否对返回值赋值

   因为(a+b)=5;这种情况是不能赋值的,所以在类的加法也需要保留该特性。

   令返回值对象为常量对象,则不能用另一个对象对返回值赋值。

 

3.考虑返回值类型--对象

  因为返回值不能赋值,则不能返回一个确定的对象,只能返回临时对象。

 

4.考虑保留运算符特性--是否满足连续加

   P4=P3+P2+P1;//等价于p3.operator+(p2).operator+(P1)

此时调用函数p3.operator+(p2)返回的是一个常量对象,众所周知,常量对象不能调用非常量函数 ,所以需要设置operator+为const函数。

二、+=运算符重载

1.考虑运算符重载函数参数个数--是否为成员函数

  因为该函数时成员函数,到时候是通过对象调用该函数,即P1+=P2相当于   P1.operrator+=(P2);

  此处P1地址会传给operator函数中的this指针,此处省略了this指针。

     return Point(this->m_x + point.m_x, this->m_y + point.m_y);

 

2.考虑保留运算符特性--是否对返回值赋值

   因为(a+=b)=5;这种情况可以赋值的,所以在类的加法也需要保留该特性。

   令返回值对象为普通对象,可以赋值。

 

3.考虑返回值类型--当前对象

  因为返回值可以赋值,则返回当前对象,返回值类型设置为&。

 

4.考虑保留运算符特性--是否满足连续加

  因为返回值非const类型,则也不需要const函数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值