此指针是 r 值吗?
Is this pointer an r-value?
我所知道的是:
- L-Value是一个表达式(可以是单个变量表达式,即x),它具有一些地址(意味着它存储在内存中并且可以引用,超出了当前表达式的范围)。
- "this指针"指向对象本身,这意味着它保存了对象的地址,这反过来意味着它是一个L值(根据第1点中的定义)。
- "这个指针"真的是L值吗?因为在一篇文章中" '这个'指针的类型"人们说"这个指针"不是L值
- 如果"这个指针"不是L值,那么它是R值还是其他值?
从幼稚的角度来看,您对左值的基本描述是一个相当不错的一般规则,但是在表达式评估存在左值到右值转换的情况下,它就崩溃了,并且它没有考虑明显的例外,例如this
关键字。
由于this
本身不是一个你可以修改或认为真正"存储"在任何地方的指针——回想一下,它的值是由编译器根据上下文自动确定的——委员会决定最好把它作为一个右值表达式。
因此,你关于内存地址的推理并不完全正确:this
作为一个指针,当然包含一个内存地址作为其物理值(在典型系统上),但这并不意味着它本身有一个。尝试获取其地址:&this
不起作用。
相关文章:
- 调整大小后指向元素值的指针unordered_map有效?
- 当成员值从指针更改为非指针时,C++常量问题
- 我可以为unordered_map分配特定的模组值吗?
- C++数据成员:值与指针
- C++ constexpr语言 - 可以在编译时评估值吗?
- 函数可以应用于 std::optional,并返回一个可选值吗?
- std::hash<std::string> 可以为不同的字符串返回相同的值吗?
- 返回数组中值的指针地址
- *++*++ppp,*++pp[1],*++(*(1+ppp)有什么具体的区别吗?(C/C++指针问题)
- 我可以从具有不同数字分隔符的istream中读取双值吗
- 有什么方法可以从不同函数的变量中检索值吗?c++
- reinterpret_cast真的不会更改指针的值吗?
- 我应该删除智能指针的移动构造函数和移动赋值吗
- 指针可以指向一个值,指针值可以指向地址吗?
- 此指针是 r 值吗?
- 我可以使用insert函数将值插入指针的向量中吗
- 我能得到一个指向当前迭代器值的指针吗?
- c++的new操作符保证返回的指针不会改变它的值吗?
- 一个有效的指向成员的指针能和一个NULL指针有相同的值吗?
- 直接访问变量(而不是使用指针和解引用)会得到不同的值吗?