永发信息网

重载运算符函数operator的返回值为什么总是声明为引用

答案:3  悬赏:50  手机版
解决时间 2021-05-03 04:15

例如Cat & opetator(const Cat &)

为什么都要用引用,一定要吗?不用可不可以?

最佳答案

我不久前正好遇到和你同样的问题,已经解决了,看了下面的你就会明白:(MyInt是类名)



MyInt operator +(const MyInt& temp) const {
cout<<"+运算符的重载"<<endl;
MyInt result;
result.a=a+temp.a;
result.b=b+temp.b;

return result;
}


MyInt& operator +=(int iSep){
a+=iSep;
b+=iSep;
cout<<"+=运算符的重载"<<endl;

return *this;
}


MyInt& operator ++(){
++a;
++b;
cout<<"前递增++运算符的重载"<<endl;

return *this;
}

MyInt operator ++(int){
cout<<"后递增++运算符的重载"<<endl;
MyInt org(*this);
++a;
++b;

return org;
}

全部回答

Cat & opetator(const Cat &) 你这句没重载任何运算符啊,关键字是operator。

比如Cat & opetator= (const Cat & p),重载了=运算符后,你在对对象使用该运算符时,可能会使用到这么一种情况 (a=b)=c;(当然,这里的a,b,c都是对象)这样的话,括号内部如果返回值是别的类型的话,就不能做为左值。返回引用的一个重要作用就是作为左值,对于不同的运算符,一般都会返回不同的类型,比如>,<这样的一般都返回bool类型,具体选择类型还是要根据自己的情况确定,没有明确的要求。

引用表示返回的还是对象本身 并且传入参数的时候不做对象赋值 比如i++ 返回的其实还是i 只是在函数内部把i+1了 并没有生成新的对象
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
天龙八部里除恶天劫楼里的怪掉什么
富锦园地址有知道的么?有点事想过去
谁能帮我翻译一下这段话?Kobe Bean Bryant (
跪求高手~!山寨iphone4机里内存太小软件下载
我国拥有世界自然文化遗产和国家重点风景名胜
女娲和伏羲为什么可以结为夫妻啊?
谁可以免费给我个水浒Q转,什么区都可以的谢
QQ玄武多少级点亮图标 西南一
战斗机的性能是指什么?
穿越火线开通要钱吗?
怎样才可以知道她是真心爱他那?
《秋天》 品味下列句中的加点词语:
谁有仙剑1的完整版无毒下载地址?
省洞村在什么地方啊,我要过去处理事情
重金悬赏 !这件衣服哪有卖的! ~
推荐资讯
nike穿42,多威穿41,adidas的鞋该穿多少码?
龙龟皮肤哪个有特效,Lol龙龟哪个皮肤有特效,
什么牌子的牛仔裤最贵,现在全球最贵的车是什
在重庆17岁可以自考中英商务管理嘛
巴乐氏鲜奶吧枣园店我想知道这个在什么地方
宝宝姓黄什么名字好听些呢?忽忽
上海交大的安泰经管学院2010年招不招企业管理
排楼村在哪里啊,我有事要去这个地方
关于电脑系统的高手请进!
T707的主题
冷冻雀斑需要多少钱
太阳今年走势如何?请众多球友评价...
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?