1. 为了与 IO 标准库一致,操作符应接受 ostream& 作为第一个形参,对类类型 const 对象的引用作为第二个形参,并返回对 ostream 形参的引用。

  2. 一般而言,输出操作符应输出对象的内容,进行最小限度的格式化,它们不应该输出换行符。

  3. 与输出操作符类似,输入操作符的第一个形参是一个引用,指向它要读的流,并且返回的也是对同一个流的引用。它的第二个形参是对要读入的对象的非 const 引用,该形参必须为非 const,因为输入操作符的目的是将数据读到这个对象中。

  4. 更重要但通常重视不够的是,输入和输出操作符有如下区别:输入操作符必须处理错误和文件结束的可能性。设计输入操作符时,如果可能,要确定错误恢复措施,这很重要。

  5. 一般而言,将算术和关系操作符定义为非成员函数。

  6. 注意,为了与内置操作符保持一致,加法返回一个右值,而不是一个引用。

  7. 既定义了算术操作符又定义了相关复合赋值操作符的类,一般应使用复合赋值实现算术操作符。

  8. 关联容器以及某些算法,使用默认 < 操作符。一般而言,关系操作符,诸如相等操作符,应定义为非成员函数。

  9. 一般而言,赋值操作符与复合赋值操作符应返回操作符的引用。

  10. 箭头操作符必须定义为类成员函数。解引用操作不要求定义为成员,但将它作为成员一般也是正确的。

  11. 重载箭头操作符必须返回指向类类型的指针,或者返回定义了自己的箭头操作符的类类型对象。

  12. 如果返回类型是指针,则内置箭头操作符可用于该指针,编译器对该指针解引用并从结果对象获取指定成员。如果被指向的类型没有定义那个成员,则编译器产生一个错误。

  13. 如果返回类型是类类型的其他对象(或是这种对象的引用),则将递归应用该操作符。编译器检查返回对象所属类型是否具有成员箭头,如果有,就应用那个操作符;否则,编译器产生一个错误。这个过程继续下去,直到返回一个指向带有指定成员的的对象的指针,或者返回某些其他值,在后一种情况下,代码出错。

posted on 2010-06-17 11:14  cppfans  阅读(105)  评论(0编辑  收藏  举报