Chinaunix首页 | 论坛 | 博客
  • 博客访问: 20819
  • 博文数量: 14
  • 博客积分: 325
  • 博客等级: 一等列兵
  • 技术积分: 155
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-13 10:46
文章分类

全部博文(14)

文章存档

2012年(14)

我的朋友
最近访客

分类: C/C++

2012-08-05 20:22:55


在C++中,可以用关键字operator加上运算符来表示函数,叫做运算符重载
 
运算符与普通函数在调用时的不同之处是:对于普通函数,参数出现在圆括号内;而对于运算符,参数出现在其左、右侧。
 
从语法上讲,可以重载大部分的运算符,并且既可以重载为普通/友元全局函数,又可以重载为成员函数。重载运算符有以下几点限制:
(1)不能重载C++语言的内置数据类型(如int,float等)的运算符。
(2)不能重载‘.’,因为‘.’在类中对任何成员都有意义,已经成为标准用法。
(3)不能重载目前C++运算符集合中没有的符号,如#,@,$等。原因有两点,一是难以理解,二是难以确定优先级。
(4)对已经存在的运算符进行重载时,不能改变优先级规则,否则将引起混乱。
(5)'=','()','[]'和'->' 只能重载为成员函数。
 
 
如果运算符被重载为全局函数,那么只有一个参数的运算符叫做一元运算符,有两个参数的运算符叫做二元运算符。如果运算符被重载为类的成员函数,那么一元运算符没有参数,二元运算符只有一个右侧参数,因为对象自己就是左侧参数。
 
以下是重载运算符的建议:
1)建议将所有的一元运算符重载为成员函数。
2)建议将'+=' '-=' '*=' '/=' '%=' '&=' '|=' '~=' '>>=' '<<=' 重载为成员函数。
3)其它所有运算符建议重载为全局函数。
 
 
 
参考:
[1] C++中重载操作符时什么时候定义成友元,什么时候定义为成员方法
 
阅读(431) | 评论(0) | 转发(0) |
0

上一篇:方法和函数

下一篇:C++中的算术运算符

给主人留下些什么吧!~~