Code Bye

关于函数返回引用类型的问题

最近在看 C++ Primer 在函数返回值和类这里有点疑问,不说废话,直接上问题。
问题:
const string &shorterString( const string &s1, const string &s2 )
{
return s1.size() <= s2.size() ? s1 : s2;
}
本人的疑问是假如返回的不是引用:
Quote: 引用:

以上函数的返回值是引用类型。无论返回s1或是s2,调用函数和返回结果时,都没有复制这些string对象。简单的说,返回的引用是函数的参数s1或s2,同样s1和s2也是引用,而不是在函数体内产生的。函数体内局部对象是不能被引用的,原因是函数调用完局部对象会被释放。

您看本人这么理解对不对,就本人的例子而言,返回引用类型,就是返回s1或s2其中的一个;返回string类型,是返回对s1或s2原字符串的一个拷贝值。也就是说,假如这个返回值作右值的话,这两种方式都可以实现。这样理解能否正确?

没错,在这里只有作为左值才有区别(要测试的话记得去掉const)


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于函数返回引用类型的问题