C 通过参考返回本地对象

C++ return a local object by reference

本文关键字:对象 返回 参考      更新时间:2023-10-16

我知道这个问题已经问了几次(百万(次,但我不明白:

如果我有这样的功能:

Object &function()
{
    Object obj;
    return obj;
}

和一个调用它的客户端代码:

Object newObject = function();

我是通过参考含义返回OBJ,这很糟糕,因为该对象一旦范围不超出范围(终止括号之后(就会销毁。但是我将当地对象传达到呼叫站点的新对象上,所以我不应该安全吗?当对象消失时,该对象是否是否已复制(其复制构造函数(?我知道将指针传递到Alosagal对象是不好的,因为我(按价值(通过(本地(指针脱离范围(堆栈框架已经消失(,该指针的位置将指向垃圾,但是为什么引用引用?代码与

的代码不是一样
Object &temp = obj;
Object newObject = temp;

?请解释。

编辑上面的问题不是在问同一件事。我完全理解为什么我不应该将指针返回到本地,以及为什么我不应该返回对本地的引用来初始化呼叫站点的参考。我不明白的是,为什么我不能使用对本地的引用来初始化呼叫网站上的对象。我认为这不是那么小。

否,正如您所说的那样,这是不安全的。

无论您使用现已破坏的对象的现象引用如何做什么。

复制它为时已晚。