1. C++ 语言不要求自增操作符或自减操作符一定作为类的成员,但是,因为这些操作符改变操作对象的状态,所以更倾向于将它们作为成员。

  2. 为了与内置类型一致,前缀式操作符应返回被增量或减量对象的引用。

  3. 同时定义前缀式操作符和后缀式操作符存在一个问题:它们的形参数目和类型相同,普通重载不能区别所定义的前缀式操作符还是后缀式操作符。为了解决这一问题,后缀式操作符函数接受一个额外的(即,无用的)int 型形参。使用后缀式操作符进,编译器提供 0 作为这个形参的实参。

  4. 为了与内置操作符一致,后缀式操作符应返回旧值(即,尚未自增或自减的值),并且,应作为值返回,而不是返回引用。

  5. 一般而言,最好前缀式和后缀式都定义。只定义前缀式或只定义后缀式的类,将会让习惯于使用两种形式的用户感到奇怪。

  6. 函数调用操作符必须声明为成员函数。一个类可以定义函数调用操作符的多个版本,由形参的数目或类型加以区别。定义了调用操作符的类,其对象常称为函数对象,即它们是行为类似函数的对象。

  7. 转换函数采用如下通用形式:

         operator type();

    这里,type 表示内置类型名、类类型名或由类型别名定义的名字。对任何可作为函数返回类型的类型(除了 void 之外)都可以定义转换函数。一般而言,不允许转换为数组或函数类型,转换为指针类型(数据和函数指针)以及引用类型是可以的。

  8. 转换函数必须是成员函数,不能指定返回类型,并且形参表必须为空。

  9. 转换函数一般不应该改变被转换的对象。因此,转换操作符通常应定义为 const 成员。

  10. 类类型转换之后不能再跟另一个类类型转换。如果需要多个类类型转换,则代码将出错。

posted on 2010-06-23 15:38  cppfans  阅读(114)  评论(0编辑  收藏  举报