引用类型的返回值与非引用类型的返回值
非引用类型的返回值处理:
调用函数的时候会创建一个临时对象,用函数返回值初始化临时对象与用实参初始化形参是一样的。如果返回值不是引用,会将返回值复制给临时对象,且其返回值既可以是临时对象,也可以是表达式求解的结果。
引用类型的返回值处理:
当函数返回引用类型时,没有复制对象,直接返回的对象本身。
函数返回引用:
1.返回的是对象本身,而不是对象的复制
2.返回引用,要求返回的是一个生命周期尚未结束的对象。
返回全局变量;
函数参数中通过指针或引用传递的对象;
不能返回临时对象的引用,临时对象会在函数返回时被析构。返回的引用实际上是不确定的内存。
对引用类型的返回值和参数最好加上const保护,避免异常破坏对象,实际操作的是同一个对象。
什么时候可以返回引用
返回值指向函数调用前已经存在的对象是合理的。
如何正确的使用引用类型的返回值
用一个引用来接收,否则还是复制了对象,使用的是返回值的一个拷贝。
返回值的处理和实参与形参的处理是一致的。