c++的运算符重载 operator前&是必要的吗 有什么作用吗 求解 谢谢各位
同问0 |浏览449|
运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。也就是说,运算符重载是通过定义函数实现的。运算符重载实质上是函数的重载。重载运算符的函数一般格式如下:
函数类型 operator 运算符名称 (形参表列)
{
对运算符的重载处理
}
不是必须的
有&是引用,调用;有可能改变其后变量的值;
无&,其后的变量仅仅参与运算,不会改变其值
运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。也就是说,运算符重载是通过定义函数实现的。运算符重载实质上是函数的重载。重载运算符的函数一般格式如下:
函数类型 operator 运算符名称 (形参表列)
{
对运算符的重载处理
}
不是必须的
有&是引用,调用;有可能改变其后变量的值;
无&,其后的变量仅仅参与运算,不会改变其值
运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。也就是说,运算符重载是通过定义函数实现的。运算符重载实质上是函数的重载。重载运算符的函数一般格式如下:
函数类型 operator 运算符名称 (形参表列)
{
对运算符的重载处理
}
不是必须的
有&是引用,调用;有可能改变其后变量的值;
无&,其后的变量仅仅参与运算,不会改变其值
&表示返回值类型是引用
什么时候需要返回引用, 基于两点
第一是需求, 有些情况语法要求必须返回引用
比如重载=操作符, 返回引用才可写出 a1=a2=a3这样的语句
再如[]操作符, 返回引用才能实现这样的语句: a[0]=1;
第二是效率问题:
很多情况是不需要返回引用的, 比如双目的+, 可以是返回一个对象的副本, 但是返回引用比返回对象的副本效率要高, 因为返回副本最少要有两次拷贝构造被调用, 对于一个体积比较大的类来说, 时间上的开销还是要考虑的. 所以这时常用返回const引用来代替返回副本.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。