C++ 返回类型和return语句
值是如何返回的
返回一个值的方式和初始化一个变量或形参的方式完全一样,返回的值用于初始化调用点的一个临时量,该临时量就是函数调用的结果。
如果函数返回引用,则该引用仅是他所引用对象的一个别名。

其中形参和返回类型都是const string的引用,不管是调用函数还是返回结果都不会真正拷贝string对象。
不要返回局部对象的引用或指针
函数完成后,他所占的空间也会随之被释放掉,因此函数终止意味着局部变量的引用将指向不再有效的内存区域。

上面两条语句都将返回未定义的值,对于第一条return语句,显然他返回了局部对象的引用,第二条return语句,字符串字面值转换成一个局部临时string对象,对于manip来说,该对象和ret一样是局部的,当函数结束时临时对象占用的空间随之释放,所以两条语句都指向了不可再用的内存空间。
指针和引用同样,都是指向了不存在的对象。
返回类类型的函数和调用运算符
调用函数的优先级和点运算符、箭头运算符相同,并且也符合左结合律。

因为上面运算符满足左结合律,所以shorterString的结果是点运算符的左侧运算对象。
引用返回左值
函数的返回类型决定函数调用是否是左值。调用一个返回引用的函数得到左值,其他返回类型得到右值,可以像使用其他左值一样使用返回引用函数。

get_val函数返回的是引用,因此调用是个左值。
列表初始化返回值
函数可以返回花括号包围的值的列表,此列表也用来对表示函数返回的临时量进行初始化。

主函数main的返回值
我们允许主函数没有return语句直接结束,因为编译器在main函数结尾没有发现return的话就会隐式插入一条返回0的return语句。