Chinaunix首页 | 论坛 | 博客
  • 博客访问: 270611
  • 博文数量: 6
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 825
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-13 18:40
文章分类

全部博文(6)

文章存档

2010年(1)

2008年(5)

我的朋友

分类: C/C++

2008-06-08 11:45:52

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