<分区>
我知道这个问题已经被问过好几(百万)次了,但是我不明白下面的内容:
如果我有这样一个函数:
Object &function()
{
Object obj;
return obj;
}
以及调用它的客户端代码:
Object newObject = function();
我通过引用返回 obj ,这很糟糕,因为该对象一旦超出范围(在终止大括号之后)就会被销毁。但是我正在将该本地对象传递给调用站点的一个新对象,所以我不应该安全吗?当对象消失时,它不应该被复制(通过它的复制构造函数)吗?我知道将指针传递给本地对象是不好的,因为我正在(按值)传递指针的位置,一旦(本地)指针超出范围(堆栈框架消失),指针的位置将指向垃圾,但为什么引用?代码不一样吗:
Object &temp = obj;
Object newObject = temp;
?请解释。
编辑 上面的问题不是在问同样的事情。我完全理解为什么我不应该返回指向本地的指针,以及为什么我不应该返回对本地的引用以在调用站点初始化引用。我不明白的是为什么我不能使用对本地的引用来初始化调用站点的对象。我不认为这是微不足道的。