第1个回答 2019-06-03
1+2是啊,你说的“链式应用”我觉得有些夸张就是连续运用操作符号,比如你用加法操作符return一个类类型数据,但是你用想使用这个被加后产生的类的成员x,如果你不引用就是a=b+c;a.x,但是如果你引用了就可以(b+c).x,只是因为如果你只是返还一个值,那么它只会在栈区开辟一块数据地址存放零时对象的值,然后把这个临时对象的值用复制构造函数复制给b,但是你却不能用它,但是引用是传地址所以可以用它,有个例子很鲜明能浅显说明这种区别:a=3,如果我用3+1,这里的3就值传递情况下的b+c显然是没有意义;但是我用a+1就是用意义的,a就是3这个地址的引用,你改变它下面的值是用意义的,只能说这么多,有些东西还要自己想;
3,更简单,++a,如果你引用了就是返回了a的地址,此时a已经加1,完全可以,但是如果是a++,你返还的是a加1之前的数值,换句话说此时a已经不是a,而是a+1,但是你如果引用,那么又是它的地址,而地址下是a+1,那么后++就和前++没有任何区别,这样做是没有意义的,能明白吗?
4,你去了当然有用,看你怎么用了,引用不是强迫你用,但是要看你想实现什么功能,举++的例子,你定义函数时必定起传地址,但是如果你返还不传引用而是传值,那么你想(++a)++,有意义吗?很显然没,应为括号里的++a是常量,这就和3+1一样;
5,看了上面的东西,如果你理解了,这个问题就不是问题了,还是地址的问题