在 S. Prat 的书中,我遇到了一个例子:
struct free_throws {
int made;
int attempts;
double percent;
};
const free_throws & clone(free_throws &ft) {
free_throws *pt;
pt = &ft;
return *pt;
}
据我了解,您不能通过引用或地址返回局部变量,因为它们将在函数结束时被销毁,并且将返回对已经不存在的变量的引用,即 为“垃圾”。
问题:是否可以像这样返回本地指针变量?为什么?
让我们看看你得到了什么...
您正在将左值引用传递给函数 - 函数外部的某个对象。
事实上,你还了它。那些。可以简单地写
那些。您返回了对您传递的同一对象的引用,仅作为 const。所以你可以返回一些东西,但有什么意义呢?
我在这里 - https://ideone.com/5fSQqc - 在类型方面进行了一些简化,并删除了 constness - 如您所见,
clone()它只是返回传递给它的内容。我们只是说 - 没有克隆发生。所以如果你这样做:
这将已经返回对局部变量的引用(传递给函数的副本) - 这是另一回事。