说对象是
class A {
public : void Silly(){
this = 0x12341234;
}
Run Code Online (Sandbox Code Playgroud)
我知道我会得到编译器错误'"这个"不是左值.但那也不是暂时的.那么"这个"的假设宣言是什么?
编译器:mac上的GCC 4.2编译器.
对于某些类X,this具有类型X* this;,但是您不允许分配它,因此即使它实际上没有类型X *const this,它的行为几乎就像防止赋值一样.正式地说,它是一个prvalue类似于整数文字的类别,因此尝试分配它大致相当于尝试为'a'或分配不同的值10.
请注意,在早期的 C++中,this是一个左值 - 分配this是允许的 - 你这样做是为了处理一个对象的内存分配,模糊地类似于重载new和delete类(当时还没有支持).