不要返回局部对象的引用或指针
函数完成后,它所占用的存储空间也随之释放掉。因此,函数终止意味着局部变量的引用将指向不再有效的区域。此时如果使用局部对象的引用或指针将发生未定义行为。
引用返回左值
函数的返回类型决定函数是否是左值。调用一个返回引用的函数得到左值,其他返回类型得到右值。可以像使用其他左值那样来使用返回引用的函数的调用,特别是我们可以为返回类型是非常量引用的函数的结果赋值,如果返回值是常量引用,则不能赋值:
char &get_val(string &str, string::size_type ix){
return str[ix]; //下标运算符得到的是非常量引用类型
}
string s("hello");
get_val(s, 0) = 'H'; //将s[0]改成'H'
列表初始化返回值
C++11新标准规定,函数可以返回花括号包围的值的列表。类似于其他返回结果,此处的列表也用来对表示函数返回的临时量进行初始化。如果列表为空,临时量执行初始化;否则,返回的值由函数的返回类型决定:
vector<string> process(