前端之家收集整理的这篇文章主要介绍了
C:引用“超出范围”对象,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有一件事我从未理解过参考文献,我希望有人可以帮助我.据我所知,引用不能为空.但是如果你有一个
函数foo()返回对堆栈对象的引用会发生什么:
Object & foo(){
Object o;
return o;
}
Object & ref = foo();
理论引用将引用一个不存在的对象,因为一旦函数返回,o就会超出范围.这里发生了什么事?
这会导致未定义的行为.不要这样做.
实现方面,实际上,引用将指向堆栈,其中用于调用foo的堆栈帧曾经是.在许多情况下,这种记忆仍然有意义,因此错误通常不会立即显现出来.因此,你应该注意不要像这样做一个悬垂的参考.
原文链接:https://www.f2er.com/c/110530.html