获取本地对象的常量引用
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 值是 tempCol
的 copy。
通常,return 值的生命周期结束于评估出现它的完整表达式(在本例中为 ... = f();
)的最后一步,但由于您将其绑定到引用(refToLocal
),它的生命周期延长到它所绑定的引用的生命周期。
当变量 refToLocal
超出范围时,它和函数 return 值都被销毁并回收内存。
查看 以获得 C 和 C++ 中函数 return 值的生命周期的更详细解释。
考虑一下:
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 值是 tempCol
的 copy。
通常,return 值的生命周期结束于评估出现它的完整表达式(在本例中为 ... = f();
)的最后一步,但由于您将其绑定到引用(refToLocal
),它的生命周期延长到它所绑定的引用的生命周期。
当变量 refToLocal
超出范围时,它和函数 return 值都被销毁并回收内存。
查看 以获得 C 和 C++ 中函数 return 值的生命周期的更详细解释。