gpt4 book ai didi

c++ - 为什么右值没有地址?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:19:58 24 4
gpt4 key购买 nike

为什么右值没有内存地址?它们是在程序执行时没有加载到 RAM 中,还是引用存储在处理器寄存器中的值?

最佳答案

您的问题(“为什么右值没有内存地址?”)有点令人困惑。右值是一种表达式。 表达式没有地址:对象有地址。更正确的问法是“为什么不能将地址运算符应用于右值表达式?”

答案很简单:您只能获取对象的地址,并非所有右值表达式都引用对象(例如,表达式 42 有值但不引用一个对象)。

一些右值表达式确实引用对象,但这些对象缺乏持久性。右值表达式引用的对象是临时对象,并在创建它的表达式结束时销毁。这样的对象确实有地址(您可以通过调用临时对象的成员函数轻松发现这一点;this 指针必须指向临时对象,因此临时对象必须有地址)。

这是左值表达式和右值表达式的根本区别。左值表达式引用具有持久性的对象:左值表达式引用的对象persists beyond a single expression .

关于c++ - 为什么右值没有地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7370109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com