兔子的技术博客

兔子

   :: 首页 :: 联系 :: 聚合  :: 管理
  202 Posts :: 0 Stories :: 43 Comments :: 0 Trackbacks

留言簿(10)

最新评论

阅读排行榜

评论排行榜

转:http://www.diybl.com/course/3_program/c++/cppjs/2008611/124644.html

一、不可以被重载的操作符
1.域操作符::  
2.取成员指针操作符.*  
3.成员操作符. 
4.选择操作符?:
 
二、重载操作符必须有一个类类型操作数
用于内置类型的操作符,其含义不能改变,也不能为内置类型定义新的操作符。
 
三、重载的操作符的优先级、结合性或操作数数目都不能改变。除了函数调用操作符operator()之外,重载操作符时使用默认实参是非法的。
 
四、重载操作符并不能保证操作数的求值顺序
逻辑与(&&)、逻辑或(||)经重载后没有短路求值特性
逗号(,)经重载后也不保证从左到右依次计算
 
五、重载操作符可以定义为类成员函数或普通的非成员函数
类成员函数有一隐含的this指针参数
 
六、操作符重载为普通非成员函数时,通常须将其声明为所操作类的友元。
 
重载操作符的设计
1.不要重载具有内置含义的操作符
赋值操作符(=)、取地址操作符(&)、逗号操作符(,)对类类型有默认含义:合成的赋值操作符进行逐个成员赋值;取地址操作符返回对象地址;逗号操作符从左到右计算每个表达式的值,并返回最右边操作数的值。
2.大多数操作符对类对象没有意义
除非提供了了重载定义,赋值操作符(=)、取地址操作符(&)、逗号操作符(,)对类类型操作数没有定义。
3.若一个类有算数操作符或位操作符,则提供相应的复合赋值操作符是好的做法。
4.用作关联容器的健类型的类应该定义小于操作符(<);用作顺序容器元素类型的类应该定义相等操作符(==)、小于操作符(<)
5.选择成员或非成员实现
(1)赋值操作符(=),下标操作符([]),函数调用操作符(()),指针成员访问箭头(->)必须重载为类成员函数。
(2)复合赋值操作符应定义为类成员函数;但定义为非成员函数也不会出线编译错误。
(3)改变对象状态或与给定类型紧密联系的操作符应定义为类成员。如自增操作符(++)、自减操作符(--)应定义为类成员。
(4)对称的操作符如算术操作符、相等操作符、关系操作符和位操作符应定义为非成员。
文章出处:http://www.diybl.com/course/3_program/c++/cppjs/2008611/124644.html
posted on 2009-09-08 18:20 会飞的兔子 阅读(401) 评论(0)  编辑 收藏 引用 所属分类: C++及开发环境

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理