首先this指针并不在类结构中,而是通过参数隐式传递给成员函数,那么在成员函数中打出this指针的地址会怎么样。
class MC{
public:
long address() {
return long(&this);
}
};
上面的代码会编译报错
,提示信息大概是这个样子:
单目‘&’的操作数必须是左值
return &this;
然后,我用gdb看了下this的类型,是这样的:
(gdb) whatis this
type = MC * const
想请问下,为什么上面打印出this指针的地址会提示错误,MC * const
也不能说一定是右值吧,而且this指针本来就是成员函数的一个形参,为什么就不允许取他的地址?求助。
this
本来就是个指针,所以直接(long) this
就好了。下面的代码可以验证这一点:
this
不是一个变量,故没有地址,参见:https://stackoverflow.com/que...