s121005
2016-03-05 01:02
采纳率: 50%
浏览 1.7k

C++中 不能在类中访问this的地址


class a{
public:
void show(){
cout<<&this;
}
}
如果this是一个指针,为什么不能访问它的地址?

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • 小灸舞 2016-03-05 01:45
    已采纳

    首先要搞清楚this指针是存放在哪的?编译器在生成程序时加入了获取对象首地址的相关代码,并把获取的首地址存放在了寄存器ECX中(VC++编译器是放在ECX中,其它编译器有可能不同),也就是成员函数的其它参数正常都是存放在栈中,而this指针参数则是存放在寄存器中。
    寄存器不能像被外设寄存器或存储器一样被访问到,它不在你的寻址范围中,必须使用特定的汇编指令才能访问。

    评论
    解决 2 无用
    打赏 举报
查看更多回答(3条)

相关推荐 更多相似问题