永发信息网

C++中为什么重载前置++运算符要加个&?

答案:4  悬赏:0  手机版
解决时间 2021-04-07 04:07
C++中为什么重载前置++运算符要加个&?
最佳答案
1、因为重载自加运算符后可以返回对象的引用, 以方便在表达式中连续使用。
举个例:
cout<<是经常用的,其实是重载了<<这个操作符。如果不返回引用,cout<
2、引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。 引用的声明方法:类型标识符 &引用名=目标变量名。
全部回答
& 代表引用,形参是引用(非const型)时,就是将该对象自己传递进函数了返回值是&时用在运算符的返回值是左值时,常用有这几个:所有的赋值(包括复合赋值),前缀自加自减,下标运算符
这里返回对象的引用, 可以连续使用。
举个例子 cout<<是我们经常用的吧
其实是重载了<<这个操作符。
如果不返回引用
cout<如果返回自身的引用 cout<就是这个意思吧。好多重载操作符,作用其实都是这样的。
还有 "="的重载
返回引用的目的 显然就是 方便写成 a = b = c;
为什么可以这样 其实是a = (b = c);
b=c返回的是b的引用,然后再继续 a = b ;如果不反回自身的引用,显然就不行了!
Complex& Complex::operator++() // 返回一个引用即代表当前对象本身
{
++real;
return *this; // 返回当前对象(立即可体现出来前置++的值)
}
Complex Complex::operator++(int)
{
return Complex(real++, image); // 这里只是返回一个对象的副本。不能体现real++后的值(因为是后置++),所以后置++只能先取值。然后再++
}追问可是为什么要用返回引用呢?写成Complex Complex::operator++()不行吗?追答你的前置++可以写成与后置++一样,只不过是使用引用类型,可以减少内存使用,比如你使用返回引用类型,那么它依然还是当前对象,并没有重新构造一个对象。你可以留意你的后置++返回的类型,实质上它在返回前是执行了一次构造函数,和复制构造函数的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
氯离子碳酸氢根离子交换体
广东陆丰市基督教浮头堂在什么地方啊,我要过
春联求横批!年年如意年年好,事事顺心事事成
试论信息不对称、风险和不确定性之间的关系?
女人说男人飞机还没降落什么意思?
为什么年纪越大朋友都???
电摩上的喇叭都是通用的么
天下红辣椒有限公司的前景好不好?
我女朋友的父母不同意我们在一起 ,因为我是外
公司开业收到其他分公司送花款应记入那个会计
历年高考英语听力MP3免费下载
mate7闪屏问题
psp3000USB也有充电接口 换一个姿势就充不上
保定新世纪驾校怎样
“春蚕到死丝方尽”是古人的误解。其实,蚕吐
推荐资讯
急急急,自然博物馆到中国科技馆的交通路线?
穿越火线888换购888需要多少钱?
死到底是死者的不幸还是生者的悲哀?
我来自XX省XX市XX学校用英语怎么讲
小沅口怎么去啊,有知道地址的么
海耶斯去哪了
骗子微情网
央视3套播出的《歌声飘过30年——百首金曲系
缺氧为什么卡在51.8
为什么满六岁才能上学
喝酒吐酒后喉咙痛该怎么办
给手机电池放进冰箱冰冻几天有什么作用?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?