引用与连续赋值有关问题,谢谢

引用与连续赋值问题,多谢!
经常看到这么一个例子,
对于一个类及三个对象a,   b,   c,   如果operator   =返回的是一个引用的话,a=b=c可以成功,但如果不是返回引用,则会出错,谁可以告诉我为什么会这样,谢谢。

------解决方案--------------------
传对象可以但是增加了拷贝的开销,
传回void不可以,打断连续赋值的语法形式
a=b=c;处理顺序为a=(b=c);因为b=c的返回值是个void,这时a=的operator=的形参需const Type&,而实参,是一个void,会报错
------解决方案--------------------
(A=B)= C如果返回的是值而不是引用,那A=B得到的是一个右值,一个右值当左值来使当然出错了。

简单地说 a=1 ,b=2,c=3 现在(a=b)=c就相当于 2=c,把C赋给2这个值,不荒唐吗?但如果返回的是引用就成了(a)=c。
------解决方案--------------------
楼主你用的是啥编译器啊?
为什么偶分别用VC2003和g++测试你的代码,都没有问题啊,都是三个98(不管是返回引用还是非引用)。
------解决方案--------------------
临时变量说的是 "临时 ",是时间(作用域)概念,并没有规定是什么类型.
只是,内置类型,默认返回的都是不可寻址,同时也就不可修改的特殊情况.但是没有准确的类型
可以表示这个(不可寻址的概念).

感觉这个代码应该没有什么问题,如果有的话,都是运算式顺序的问题.
不过按理说,应该是先 a = ( b = c ) 才对.只是c++的算式有时真的不是常理可以解释.