关于调用返回值为引用的函数的问题
答案:1 悬赏:50
解决时间 2021-01-30 16:52
- 提问者网友:你独家记忆
- 2021-01-30 09:05
关于调用返回值为引用的函数的问题
最佳答案
- 二级知识专家网友:污到你湿
- 2021-01-30 09:23
在这个函数中use (looper)和XXX=use (looper);是等效的。用任一种获得的效果一样。
在use函数中改变了looper.used的内容,并没有改变looper的指向。
另外后者XXX=use (looper);比较显式,不容易出错。适合改变单一对象的内容
改变多个对象的接口,就用foo(T &a,T &b,T &c,T &d);
追问:谢谢你!
那我还想问一下,什么情况下可以这样用?就是函数本身带返回值的,但是调用的时候不将它赋给某个变量
追答:呵呵,刚不是也说了,改变多个对象时,这么写,因为只能返回一个对象的引用。
比如声明是bool foo(T &a,T &b,T &c,T &d);
调用foo(a, b, c,d);就一次可以改变4个对象的内容。
T &b=foo(a);只返回一个。而且必须新建该引用名。
追问:嗯 我明白了
就是没转过来这个弯儿,因为上c语言时老师讲调用带返回值的函数时,必须将它赋给某个变量。现在自己看c++,突然出现这么个用法,一时转不过来,总是觉得不带返回值的函数调用才能使用use(looper);这种形式
在use函数中改变了looper.used的内容,并没有改变looper的指向。
另外后者XXX=use (looper);比较显式,不容易出错。适合改变单一对象的内容
改变多个对象的接口,就用foo(T &a,T &b,T &c,T &d);
追问:谢谢你!
那我还想问一下,什么情况下可以这样用?就是函数本身带返回值的,但是调用的时候不将它赋给某个变量
追答:呵呵,刚不是也说了,改变多个对象时,这么写,因为只能返回一个对象的引用。
比如声明是bool foo(T &a,T &b,T &c,T &d);
调用foo(a, b, c,d);就一次可以改变4个对象的内容。
T &b=foo(a);只返回一个。而且必须新建该引用名。
追问:嗯 我明白了
就是没转过来这个弯儿,因为上c语言时老师讲调用带返回值的函数时,必须将它赋给某个变量。现在自己看c++,突然出现这么个用法,一时转不过来,总是觉得不带返回值的函数调用才能使用use(looper);这种形式
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯