运算符重载为友元函数

1、为什么需要把需要把运算符重载为友元函数?
运算符重载,如果重载为类的成员函数能解决问题的话最好。但是有些情况下,将运算符重载为成员函数并不能有效的解决问题,这个时候考虑将运算符重载为全局函数。但是将运算符重载为全局函数也有一些不足。遇到这种情况的一种策略就是把运算符重载为友元函数。

Complex x,y;
y=x+5//情况一
y=5+x;//情况二
  • 情况一
    这种情况将加号运算符重载为Complex类的成员函数没有问题。x+5等价于x.operator+(5)。
  • 情况二
    这种情况如果将加号运算符重载为Complex类的成员函数不会发起符号函数的调用,但是如果将加号重载为全局函数,全局函数内部又无法访问到x对象的数据。此时考虑将该全局函数生命为Complex类的友元函数。

2、什么情况下需要将运算符重载为友元函数?

  • 情况一
    对双目运算符进行的重载,运算符左侧运算对象不能够发起运算符重载函数的调用(左侧运算对象的类型与右侧不匹配,但是定义运算符函数属于右侧类类型的成员函数 ,因此无法发起函数调用。),此时应该重新写一个全局的运算符重载函数,并在该类中将此方法声明为友元函数。
  • 其它情况
    (遇到后再做记录。)
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值