C++11函数返回类型后置

C++11新增一种函数声明语法,在参数列表后面指定返加类型。double fun1(double , int); //C++11之前函数声明方式
auto fun2(double, int) ->double; //C++11新增函数声明方式

//auto在这里只是占位符,没有其它意义大家看了估计会讲,C++11新增的函数声明方式看起来并不好,还没有之前的直观。哪为什么要新增一种函数声明方式?
不用返回类型后置的例子
先写个返回类型后置的例子,再来讲为什么要这样。

千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用

先看第一种情况:返回一个局部对象的引用。它的问题在于,局部对象 —– 顾名思义 —- 仅仅是局部的。也就是说,局部对象是在被定义时创建,在离开生命空间时被销毁的。所谓生命空间,是指它们所在的函数体。当函数返回时,程序的控制离开了这个空间,所以函数内部所有的局部对象被自动销毁。因此,如果返回局部对象的引用,那个局部对象其实已经在函数调用者使用它之前被销毁了。