运算符重载的基本知识

一.运算符重载的实质

1.运算符重载:对已有的运算符赋予多重含义,实质是函数重载,它提供了C++的可扩展性。
2.实现机制
转化:
运算表达式转化为对运算符函数的调用
运算对象转化为运算符函数的实参

二.运算符能否重载

1.可以重载的运算符
算术运算符:+,-,,/,%,++,–;
位操作运算符:&,|,~,^(位异或),<<(左移),>>(右移);
逻辑运算符:!,&&,||;
比较运算符:<,>,>=,<=,==,!=;
赋值运算符:=,+=,-=,
=,/=,%=,&=,|=,^=,<<=,>>=;
其他运算符:[],(),->,(逗号运算符),new,delete,new[],delete[],->*
2.不能重载的运算符
成员访问运算符.
作用域运算符::
成员指针访问运算符.*
条件运算符?:
Sizeof

三.重载运算符的限制

重载运算符函数可以对运算符作出新的解释,但原有基本语义不变
1.不改变运算符的优先级
2.不改变运算符的结合性
3.不改变运算符所需要的操作数个数

只能重载C++语言中已有的运算符,不能创建新的运算符。
经重载的运算符,其操作数中至少应该有一个是自定义类型。
四.运算符重载的两种形式
(1) 运算符重载为类的成员函数
(2) 运算符重载为类的友元函数
注意:
1.重载为类的成员函数时
参数个数=原操作数个数-1 (后置++、–除外)
2.重载为友元函数时
参数个数=原操作数个数,且至少应该有一个自定义类型的形参。

五.一元运算符 object op或者是op object**

1.重载为成员函数
解释为:object .operator op()
操作数由对象object通过this指针隐含传递
2.重载为友元函数
解释为:operator op(object)
操作数由参数表的参数object提供

六.二元运算符 ObjectL op ObjectR

1.重载为成员函数
解释为:ObjectL . operator op( ObjectR )
左操作数由ObjectL通过this指针传递,右操作数由参数ObjectR传递
2.重载为友元函数
解释为:operator op ( ObjectL, ObjectR )
左右操作数都由参数传递

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值