tem*_*def 15 c++ arrays pointers this-pointer language-lawyer
这个早期的问题询问this[0]
C#中的含义.在C++中,this[0]
意思是"指向的数组的第0个元素this
".
是否保证不会在C++中导致未定义的行为以这种方式引用接收器对象?我并不主张使用这种语法,并且我很好奇这个规范是否能保证它始终有效.
谢谢!
AnT*_*AnT 19
对于任何有效的对象指针p
,p[0]
相当于*p
.所以this[0]
相当于*this
.没有更多的东西.就像您可以取消引用任何有效指针一样[0]
,您可以取消引用this
它.
换句话说,它只是一种"棘手"的写作方式*this
.它可以用来混淆代码.它也可以在某些特定情况下用于有用的目的,因为任何独立对象都可以被认为是大小为1的数组.(来自C++ 03,Additive运算符:"出于这些运算符的目的,指针非对象对象的行为与指向长度为1的数组的第一个元素的指针的行为相同,其中对象的类型为其元素类型.")
PS正如Johannes在评论中指出的那样,通过使用C++ 11特性,可以提出一个上下文,其中this
指向一个不完整类型的指针.在那种情况下,this[0]
表达式变为无效,而*this
表达式仍然有效.
Ker*_* SB 11
this[0]
是一样的*(this + 0)
,所以确实这很好(尽管有点奇怪).
归档时间: |
|
查看次数: |
807 次 |
最近记录: |