如
class a{
public:
void show(){
cout<<&this;
}
}
如果this是一個指針,為什麼不能訪問它的地址?
首先要搞清楚this指針是存放在哪的?編譯器在生成程序時加入了獲取對象首地址的相關代碼,並把獲取的首地址存放在了寄存器ECX中(VC++編譯器是放在ECX中,其它編譯器有可能不同),也就是成員函數的其它參數正常都是存放在棧中,而this指針參數則是存放在寄存器中。
寄存器不能像被外設寄存器或存儲器一樣被訪問到,它不在你的尋址范圍中,必須使用特定的匯編指令才能訪問。