我知道这个问题已经问了几次(百万(次,但我不明白:
如果我有这样的功能:
Object &function()
{
Object obj;
return obj;
}
和一个调用它的客户端代码:
Object newObject = function();
我是通过参考含义返回OBJ,这很糟糕,因为该对象一旦范围不超出范围(终止括号之后(就会销毁。但是我将当地对象传达到呼叫站点的新对象上,所以我不应该安全吗?当对象消失时,该对象是否是否已复制(其复制构造函数(?我知道将指针传递到Alosagal对象是不好的,因为我(按价值(通过(本地(指针脱离范围(堆栈框架已经消失(,该指针的位置将指向垃圾,但是为什么引用引用?代码与
的代码不是一样Object &temp = obj;
Object newObject = temp;
?请解释。
编辑上面的问题不是在问同一件事。我完全理解为什么我不应该将指针返回到本地,以及为什么我不应该返回对本地的引用来初始化呼叫站点的参考。我不明白的是,为什么我不能使用对本地的引用来初始化呼叫网站上的对象。我认为这不是那么小。
否,正如您所说的那样,这是不安全的。
无论您使用现已破坏的对象的现象引用如何做什么。
复制它为时已晚。