详解C++编程中一元运算符的重载

2020-01-06 14:31:31丽君
易采站长站为您分析C++编程中一元运算符的重载,特别对递增和递减运算符重载作了着重讲解,需要的朋友可以参考下  

可重载的一元运算符如下:

  1. !(逻辑“非”)
  2. &(取址)
  3. ~(二进制反码)
  4. *(取消指针引用)
  5. +(一元加)
  6. -(一元求反)
  7. ++(递增)
  8. --(递减)
  9. 转换运算符

后缀递增和递减运算符(++ 和 ––)在递增和递减中单独处理,下面会讲到。

以下规则适用于所有其他一元运算符。若要将一元运算符函数声明为非静态成员,则必须用以下形式声明它:
ret-type operator op ()
其中 ret-type 是返回类型,op 是上表中列出的运算符之一。
若要将一元运算符函数声明为全局函数,则必须用以下形式声明它:
ret-type operator op (arg )
其中 ret-type 和 op 如上所述用于成员运算符函数,arg 是要参与运算的类类型的参数。
注意
一元运算符的返回类型没有限制。例如,逻辑“非”(!) 返回整数值是合理的,但并非强制性的。

递增和递减运算符重载
由于递增和递减运算符各有两个变量,因此它们属于一个特殊类别:

  • 前置递增和后置递增
  • 前置递减和后置递减

    编写重载的运算符函数时,为这些运算符的前缀和后缀版本实现单独的版本很有用。若要区分这两者,请遵循以下规则:运算符的前缀形式与声明任何其他一元运算符的方式完全相同;后缀形式接受 int 类型的其他参数。

    注意
    当为递增或递减运算符的前缀形式指定重载运算符时,其他参数的类型必须是 int;指定任何其他类型都将产生错误。