return 语句终止当前正在执行的函数并将控制权返回到调用该函数的地方。

函数返回有2种,一种没有返回值,一种有返回值。

没有返回值的return语句只能用在返回类型是void的函数中。返回void的函数不要求非有return语句,函数最后一句会隐式执行return。

void函数想在中间提前退出可以使用return语句。

有返回值的return语句返回的值要和函数返回类型相一致或可以转换。

return expression;

不要返回局部对象的引用或指针,函数完成后所占用的存储空间也随之释放掉,局部变量的引用将指向不再有效的内存区域

const string &manip(){

string ret;
//修改ret的值
if (!ret.empty())
return ret; //返回局部对象的引用错误
else
return "Empty"; //返回局部临时量也是错误
}

函数返回的是引用类型时得到左值。

char &get_val(string &str, string::size_type ix){
return str[ix];
}

string s("hello world");
get_val(s,0) = 'H';

返回值是引用,所以放到左边。

函数可以返回花括号包围的值的列表

#include <iostream>
#include <vector>
#include <string>

using std::vector;
using std::string;
vector<string> process() {

string expected = "abc";
if (expected.empty()){
std::cout <<"empty" <<std::endl;
return {};
} else if (expected== "abc"){
return {"func","okay"};
} else {
return {"func","okay","exp"};
}

}


int main() {
process();
}