多态性——运算符重载(二)

  1. 友元运算符重载函数
    由于友元运算符重载不是该类的成员函数,故类外定义时不需要缀上类名。
    (1)在类内部定义
    friend 函数类型 operator 运算符(形参表)
    {
    函数体;
    }
    (2)在类中定义,在类外声明
    class X{
    friend 函数类型 operator 运算符(形参表);
    }
    函数类型 operator 运算符(形参表)
    {
    函数体;
    }
    2.友元函数
    这里写图片描述
    3.单目运算符重载:用友元函数重载单目运算符时,需要一个显式的操作数。
    4.在传数据时,用&时形参对象的引用,是通过地址的方式传递参数的,对形参的改变会改变实参的改变;而直接传递参数时,形参是对象,是通过传值的方式传递参数的,在函数体中任何更改都不会传递到函数体外。
    5.成员运算符重载函数:成员运算符重载函数形参表中仅有一个参数,它作为运算符的右操作数,另一个操作数是隐含的,是该类的对象,用this指针传递。
    6.成员运算符重载单目运算符重载:返回值是用this 指针返回的。
    7.比较
    (1)对双目运算符而言,成员运算符重载函数的参数表中含有一个参数,而友元函数参数表中必须有两个参数;对单目运算符而言,成员运算符重载函数参数表中没有参数,而友元运算符重载函数参数表中含有一个参数。
    (2)双目运算符一般都可以重载为友元运算符重载函数或成员运算符重载函数,根据出现的左右可能会导致错误(成员运算符重载函数),所以最好使用友元函数。(com1=100+com,com是一个类,如果是成员函数重载则为com1=100.operator(com),故会出错)。
    一般而言,双目运算符重载为友元函数比成员函数更加有利于使用。对于单目运算符则选择成员运算符更加方便
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值