C++基础之重载运算符的详细介绍
2011-07-27 17:39
260 查看
运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。建议大家看看这篇文章,《C++基础之重载赋值运算符》,仅供参考。
C++允许为类的对象构造运算符来实现单目或者双目运算,这个特性就叫运算符重载。可以通过添加成员函数来实现运算符重载。
重载是由P.J.Plauger发现的。
一。重载运算符的时机
1。需要在定义的对象间相互赋值时,重载赋值运算符
2。需要在数字类型增加算术属性时,重载算术运算符
3。需要为定义的对象进行逻辑比较时,重载关系运算符
4。对于container,重载下标运算符[]
5。需要从I/O流中读写对象时,重载<<和>>运算符。
6。重载成员指针运算符 -> 以实现smart指针
7。在少数情况下重载new,delete运算符
8。不重载其他运算符
实际上任何用重载运算符完成的工作都可以使用成员函数来实现。
重载的运算符可以和原来的运算符不一定有必然联系,例如我重载\’+\’运算马夫,可以不做加法运算,而是把字符串连接起来。当然你要是用\’+\’运算符来做减法运算,也是可以的,不过这不是明智之举。
二。重载运算符的规则
1。重载的运算符不能违反语言的语法规则
2。如果一个运算符可以放在两个操作数之间,就可以重载它来满足类操作的需要,哪怕这种用法原本为编译器不能接受。
3。不能创造C++语言中没有的运算符
4。下列运算符不能重载
. 类成员运算符
.* 成员指针运算符
:: 域解析运算符
:条件表达式运算符
5。重载时不能改变运算符的优先级
三。运算符重载
运算符重载是通过对运算符函数的重载来实现的。对于每一个运算符@,在C++中都对应一个运算符函数operator@,其中@为C++各种运算符。
运算符函数的一般原型为:
ype operator@ (arglist) 其中type为运算结果的类型,arglist为操作数列表。
希望通过以上三方面内容的介绍,能够给你带来帮助。
C++允许为类的对象构造运算符来实现单目或者双目运算,这个特性就叫运算符重载。可以通过添加成员函数来实现运算符重载。
重载是由P.J.Plauger发现的。
一。重载运算符的时机
1。需要在定义的对象间相互赋值时,重载赋值运算符
2。需要在数字类型增加算术属性时,重载算术运算符
3。需要为定义的对象进行逻辑比较时,重载关系运算符
4。对于container,重载下标运算符[]
5。需要从I/O流中读写对象时,重载<<和>>运算符。
6。重载成员指针运算符 -> 以实现smart指针
7。在少数情况下重载new,delete运算符
8。不重载其他运算符
实际上任何用重载运算符完成的工作都可以使用成员函数来实现。
重载的运算符可以和原来的运算符不一定有必然联系,例如我重载\’+\’运算马夫,可以不做加法运算,而是把字符串连接起来。当然你要是用\’+\’运算符来做减法运算,也是可以的,不过这不是明智之举。
二。重载运算符的规则
1。重载的运算符不能违反语言的语法规则
2。如果一个运算符可以放在两个操作数之间,就可以重载它来满足类操作的需要,哪怕这种用法原本为编译器不能接受。
3。不能创造C++语言中没有的运算符
4。下列运算符不能重载
. 类成员运算符
.* 成员指针运算符
:: 域解析运算符
:条件表达式运算符
5。重载时不能改变运算符的优先级
三。运算符重载
运算符重载是通过对运算符函数的重载来实现的。对于每一个运算符@,在C++中都对应一个运算符函数operator@,其中@为C++各种运算符。
运算符函数的一般原型为:
ype operator@ (arglist) 其中type为运算结果的类型,arglist为操作数列表。
希望通过以上三方面内容的介绍,能够给你带来帮助。
相关文章推荐
- linux 常用基础命令 tail 详细介绍
- Linux shell脚本基础学习详细介绍(完整版)
- AngularJS基础 ng-non-bindable 指令详细介绍
- 微信小程序 基础组件与导航组件详细介绍
- C语言中基础小问题详细介绍
- Linux shell脚本基础学习详细介绍(完整版)二
- 较详细介绍IBM AIX操作系统上常用的korn shell的基础知识
- 详细介绍Linux shell脚本基础学习
- UML中的常用基础类图元素详细介绍大全
- RabbitMQ基础概念详细介绍
- wordpress入门基础:wordpress文件系统结构详细介绍
- 转载一个简单的lua展示【COCOS2DX-LUA 脚本开发之一】LUA语言基础在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途!
- RabbitMQ基础概念详细介绍
- RabbitMQ基础概念详细介绍
- RabbitMQ基础概念详细介绍
- CSS从基础到熟练学习笔记(二) RGB颜色对照表以及详细介绍CSS中的三种颜色表示方式
- 【COCOS2DX-LUA 脚本开发之一】LUA语言基础在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途!
- RabbitMQ基础概念详细介绍
- 柯南君:看大数据时代下的IT架构(2)消息队列之RabbitMQ-基础概念详细介绍
- linux 常用基础命令 ls 详细介绍