6.3 返回类型及引用语句
return 终止当前正在执行的函数并将控制权返回到调用该函数调用的地方。
return;
return expression
无返回值的函数
无返回值的函数一般被定义为void型,在函数结尾可以不加return,函数会隐形返回。return可以用作中断函数使用。
有返回值的函数
有返回值的函数一般不可定义为void,函数返回的类型就是函数定义的类型。编译器会在运行时检查这一语法错误。
返回的值是一个临时的变量,一般是拷贝的,如果返回的是引用,那就是引用的别名,完成返回之后,返回值所占用的空间也随之被释放掉。
不要返回局部变量的引用或者指针,因为在函数结束的时候局部变量失效了,引用指向的是一个空区域。
引用返回左值
调用一个返回引用的函数返回的是左值,也就是说函数在左边,如
char &get(string s,int i)
{
return s[i];
}
main()
{
string s;
get(s,0)='A';
}
在主函数中,函数在等号的左侧,含义是将字符串第一个元素改成字母A。
列表初始化返回值
vector<string> f()
{
return {
};
}
C++11规定这样是合法的,返回的空vector
主函数返回值
main函数的返回值可以看作是状态指示器,返回0表示执行成果,返回其他值表示执行失败,如果在主函数中不加入返回值,一般会隐式的传递一个0。
返回一个数组指针
因为子函数无法返回数组,因此可以返回指向数组的指针或引用。
辨析