美文网首页
c++ 运算符重载

c++ 运算符重载

作者: 杀破魂 | 来源:发表于2020-01-24 10:06 被阅读0次

    重载方法

    运算符的重载实质上是函数的重载。函数的重载就是对一个已有函数赋予新的含义,使之实现新的功能。

    重载运算符的函数一般格式如下:

    函数类型 operator 运算符名称 (形参列表)
    {对运算符的重载处理}
    
    例如:
    Complex operator + (Complex &c1,Complex &c2);
    

    operator是关键字,专门用于定义重载运算符的函数。

    重载规则

    • c++不允许用户自定义新的运算符,只能对已有的c++运算符进行重载
    • 重载不能改变运算符运算对象。如“》”是双目运算符,重载后仍为双目,需要两个参数。运算符“+”既可以作为单目运算,也可以作为双目运算,可以分别将他们重载为单目运算或双目运算。
    • 重载不能改变运算符的优先级。如“*”和“/”优先于“+”和“-”,不论怎么重载,各运算符之间的优先级不会改变。
    • 重载不嗯呢改变运算符的结合性。如赋值运算符=是右结合(自右至左),重载后仍为右结合
    • 重载运算符的函数不能有默认的参数,否则就改变了运算符参数的个数
    • 重载的运算符必须和用户定义的自定义类型的对象一起 使用,其参数至少应有一个类对象(或类对象的引用)。
    Complex operator + (int a,Complex &c)
    {return Complex(a+c.real,c.imag);}
    
    • 用于类对象的运算符一般必须重载,但有两个列外,运算符=和&不必用户重载。(1、复制运算符=可以用于每一个类对象,可以 利用它在同类对象之间相互赋值。有时心痛提供的默认的对象赋值运算符不能满足程序的要求,在这种情况下,就需要自己重载复制运算符。2、地址运算符&也不必重载,它能返回类对象在内存中的起始地址。)
    • 运算符重载函数可以是类的成员函数,也可以是类的友元函数,还有是即非类的成员函数也不是友元函数的普通函数。

    相关文章

      网友评论

          本文标题:c++ 运算符重载

          本文链接:https://www.haomeiwen.com/subject/cjznzctx.html