C++ 运算符重载

来源:互联网 发布:金融产品设计书籍知乎 编辑:程序博客网 时间:2024/04/29 21:20

      运算符重载特性:

          (1) 除了类属关系运算符"."、成员指针运算符".*"、作用域运算符"::"、sizeof运算符和三目运算符"?:"以外,C++中的所有运算符都可以重载。

(2) 重载运算符限制在C++语言中已有的运算符范围内的允许重载的运算符之中,不能创建新的运算符。

(3) 运算符重载实质上是函数重载,因此编译程序对运算符重载的选择,遵循函数重载的选择原则。

(4) 重载之后的运算符不能改变运算符的优先级和结合性,也不能改变运算符操作数的个数及语法结构。

(5) 运算符重载不能改变该运算符用于内部类型对象的含义。它只能和用户自定义类型的对象一起使用,或者用于用户自定义类型的对象和内部类型的对象混合使用时。

(6) 运算符重载是针对新类型数据的实际需要对原有运算符进行的适当的改造,重载的功能应当与原有功能相类似,避免没有目的地使用重载运算符。

 (7)重载运算符的函数不能有默认的参数,否则就改变了运算符的参数个数,与前面第3点相矛盾了;

(8)重载的运算符只能是用户自定义类型,否则就不是重载而是改变了现有的C++标准数据类型的运算符的规则了,会引会天下大乱的;

(9)用户自定义类的运算符一般都必须重载后方可使用,但两个例外,运算符=&不必用户重载;

(10)运算符重载可以通过成员函数的形式,也可是通过友元函数,非成员非友元的普通函数。

2.函数重载过程

  <函数类型> operator <运算符>(<参数表>)

    {

     <函数体>

    }

      

  


0 0