【发布时间】:2017-11-09 11:56:32
【问题描述】:
考虑一下:
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();
我知道它可以完美地编译和运行。我什至知道它在生产代码中被广泛使用。 那么问题来了,本地对象是不是一定要在函数作用域之后删除??引用如何“附加”到必须删除本地对象???
【问题讨论】:
-
不是对本地值的引用,而是对函数返回的copy的引用。它返回一个值,而不是一个引用。
-
是,但副本也必须删除
-
这是对临时的引用。
-
顺便说一句,如今通过返回值优化 (RVO) 将非引用函数调用结果分配给引用只是一个不必要的烦恼。您可以将结果分配给一个值变量(删除 &),而不会造成任何性能损失。
标签: c++ compiler-errors reference constants c++03