个有关问题

弱弱的问个问题,呵呵
函数返回T和T&有什么区别,什么情况下返回T,什么情况下返回T&,呵呵...

------解决方案--------------------
T是返回一个对象
T&返回一个对象的引用

根据自己需要选择返回类型,在自定义类型中
operator=一般返回对象的引用
在后置operator++一般返回对象

------解决方案--------------------
effective c++ 2e item 23/29/30
------解决方案--------------------
返回T时,要调用拷贝构造函数,效率比较低,但如果T是一个内置类型的话也无所谓.
返回T&时,直接返回函数体内的那个返回值的引用,所以要注意内部的返回值不能是局部变量.

A fun(const A&a)
{
A b;
return b;
// return a; //这里返回a,b都是可以的,因为返回类型是A,是按值返回
}

A& fun(const A&a)
{
A b;
// return b; //这里只能返回a而不能返回b,因为返回类型是A&,而b是局部变量,函数结束之后它已经消失,所以函数体外对它的接收已经是一堆垃圾了.
return a;
}