微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

xvalue和prvalue之间的一些区别

如何解决xvalue和prvalue之间的一些区别

我最近一直在认真研究C ++分类。左值和右值之间的区别似乎很明显,但是当涉及到prvalue和xvalue时,我感到困惑。
给出以下示例:

Child

运行示例,控制台将放置:
123
123
123
-858993460
谁能解释为什么它在最后的输出中给出了意外的值?
此示例显示关于xvalue的什么功能

解决方法

foo2返回绑定到临时的引用,该引用立即被销毁;它总是返回悬挂的reference

与return语句中的函数的返回值绑定的临时绑定不会扩展:它会在return表达式的末尾立即销毁。这样的函数总是返回一个悬空的引用。

对返回的引用(如foo2(bar1).valuebar2 = foo2(bar1);的取消引用导致UB;一切皆有可能。

另一方面,foo1没有这样的问题。返回值已从临时对象移出。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。