获取本地对象的常量引用

Getting the const reference of the local object

考虑一下:

std::vector<std::string> f() //some irrelevant function
{
    std::vector<std::string> tempCol;
...//some more irrelevant stuff
    return tempCol;
}

const std::vector<std::string>& refToLocal = f();

我知道这可以完美地编译和运行。我什至知道它在生产代码中有不同的使用。 那么问题来了,函数作用域之后是否一定要删除局部对象??如何引用 'attaches' 必须删除本地对象???

tempCol(局部变量)在函数执行完毕后被销毁。函数的 return 值是 tempColcopy

通常,return 值的生命周期结束于评估出现它的完整表达式(在本例中为 ... = f();)的最后一步,但由于您将其绑定到引用(refToLocal),它的生命周期延长到它所绑定的引用的生命周期。

当变量 refToLocal 超出范围时,它和函数 return 值都被销毁并回收内存。

查看 以获得 C 和 C++ 中函数 return 值的生命周期的更详细解释。