C++基础之重载运算符的详细介绍

发表于:2011-9-15 09:53

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。建议大家看看这篇文章,《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++基础之重载赋值运算符

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号