加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C:引用“超出范围”对象

发布时间:2020-12-16 03:43:26 所属栏目:百科 来源:网络整理
导读:有一件事我从未理解过参考文献,我希望有人可以帮助我.据我所知,引用不能为空.但是如果你有一个函数foo()返回对堆栈对象的引用会发生什么: Object foo(){ Object o; return o;}Object ref = foo(); 理论引用将引用一个不存在的对象,因为一旦函数返回,o就会超
有一件事我从未理解过参考文献,我希望有人可以帮助我.据我所知,引用不能为空.但是如果你有一个函数foo()返回对堆栈对象的引用会发生什么:
Object & foo(){
    Object o;
    return o;
}

Object & ref = foo();

理论引用将引用一个不存在的对象,因为一旦函数返回,o就会超出范围.这里发生了什么事?

解决方法

这会导致未定义的行为.不要这样做.

实现方面,实际上,引用将指向堆栈,其中用于调用foo的堆栈帧曾经是.在许多情况下,这种记忆仍然有意义,因此错误通常不会立即显现出来.因此,你应该注意不要像这样做一个悬垂的参考.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读