详谈C++ 重载运算符中友元函数和成员函数

1.不能被重载的运算符有五个,分别是 . .* :: ?: sizeof
有两个运算符系统提供默认重载版本:
(1.)赋值运算符“=”,系统默认重载为对象数据成员的复制。
(2.)地址运算符“&”,系统默认重载为返回任何类对象的地址。
2.运算符函数可以重载为成员函数,友元函数和普通函数。使用非成员,非友元的普通函数重载访问private,protect数据成员时,必须通过public接口提供的函数实现,增加程序开销。所以重载运算符用成员函数或友元函数。他们的关键区别在于,成员函数有this指针,而友元函数没有this指针。
(1.) 一元运算符(无论前置还是后置,都要求有一个操作数)
Object op 或 op Object
<1> 当重载为成员函数,编译器解析为:
Object.operator op()
操作数由对象Object通过this指针隐含传递,所以参数表为空。
<2>当重载为友元函数时,编译器解析为:
operator op(Object)
函数operator op所需的操作数由参数表Object提供。
(2.)二元运算符(要求有左、右操作数)
ObjectL op ObjectR
<1>当重载为成员函数,编译器解析为:
ObjectL.operator op (ObjectR)
左操作数ObjectL通过this指针传递,右操作数由参数ObjectR传递。
<2>重载为

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值