c++的运算符重载 operator前&是必要的吗 有什么作用吗 求解-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

c++的运算符重载 operator前&是必要的吗 有什么作用吗 求解

a123456678 2016-03-06 10:54:33 2009

c++的运算符重载 operator前&是必要的吗 有什么作用吗 求解 谢谢各位
同问0 |浏览449|

C++
分享到
取消 提交回答
全部回答(4)
  • 游客duzwdtzqsaq3i
    2020-08-03 20:12:19

    非必须,减少调用时的构造和拷贝消耗

    0 0
  • nothingfinal
    2019-07-17 18:54:15

    运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。也就是说,运算符重载是通过定义函数实现的。运算符重载实质上是函数的重载。重载运算符的函数一般格式如下:

    函数类型 operator 运算符名称 (形参表列)
    {
    对运算符的重载处理
    }
    不是必须的
    有&是引用,调用;有可能改变其后变量的值;
    无&,其后的变量仅仅参与运算,不会改变其值

    0 0
  • xumaojun
    2019-07-17 18:54:15

    运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。也就是说,运算符重载是通过定义函数实现的。运算符重载实质上是函数的重载。重载运算符的函数一般格式如下:

          函数类型 operator 运算符名称 (形参表列)
          { 
          对运算符的重载处理
          }

    不是必须的
    有&是引用,调用;有可能改变其后变量的值;
    无&,其后的变量仅仅参与运算,不会改变其值


    运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。也就是说,运算符重载是通过定义函数实现的。运算符重载实质上是函数的重载。重载运算符的函数一般格式如下:

    函数类型 operator 运算符名称 (形参表列)
    {
    对运算符的重载处理
    }
    不是必须的
    有&是引用,调用;有可能改变其后变量的值;
    无&,其后的变量仅仅参与运算,不会改变其值

    0 0
  • a123456678
    2019-07-17 18:54:15

    &表示返回值类型是引用
    什么时候需要返回引用, 基于两点
    第一是需求, 有些情况语法要求必须返回引用
    比如重载=操作符, 返回引用才可写出 a1=a2=a3这样的语句
    再如[]操作符, 返回引用才能实现这样的语句: a[0]=1;

    第二是效率问题:
    很多情况是不需要返回引用的, 比如双目的+, 可以是返回一个对象的副本, 但是返回引用比返回对象的副本效率要高, 因为返回副本最少要有两次拷贝构造被调用, 对于一个体积比较大的类来说, 时间上的开销还是要考虑的. 所以这时常用返回const引用来代替返回副本.

    0 0
添加回答
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程