首页
社区
课程
招聘
[求助]this指针问题???
发表于: 2014-8-17 10:05 4154

[求助]this指针问题???

2014-8-17 10:05
4154
return this
return *this
问个菜问题,这两句代码有什么区别???

this存在ebp-8的地方
return this,反汇编出来应该是
mov eax,dword ptr[ebp-8]

return *this反汇编出来应该是
mov ecx,dword ptr[ebp-8]
mov eax,dowrd ptr[ecx]
才对啊。

怎么反汇编出来都是一样的呢?
都是mov eax,dword ptr[ebp-8]

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 136
活跃值: (105)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
2
返回的地址 而不是地址里面内容
2014-8-17 10:32
0
雪    币: 517
活跃值: (84)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
3
请理解好“引用”这个概念。
A A::ret_A()
{
  return *this;
}

A& A::ret_A()
{
  return *this;
}

A* A::ret_A()
{
  return this;
}

这三个函数,第一个返回的是对象副本,使用了复制构造。第二个返回的对象引用,引用其实最终也只是个指针而已。在汇编级,的确代码一样。
A& a = AA;  A* b = &AA;
a.do(); b->do();
a引用在使用时,可被视作(*b)。
2014-8-17 10:39
0
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
ebp-8 应该是this本身的引用, &this=this
2014-8-17 13:25
0
雪    币: 0
活跃值: (309)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
[QUOTE=wmhnq;1309347]return this
return *this
问个菜问题,这两句代码有什么区别???

this存在ebp-8的地方
return this,反汇编出来应该是
mov eax,dword ptr[ebp-8]

return *this反汇编出来应该是
mov ecx,dw...[/QUOTE]
=========================
我打个比喻吧,比如有一个柜子,有编号1-2-3,你在编号为2的柜子里放了个THIS指针,return *this的意思就是取回盒子里的this指针,return this的意思就是取回盒子的编号为2
2014-8-17 13:28
0
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
很形像。
2014-8-17 13:42
0
雪    币: 118
活跃值: (27)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
1.返回指针2.返回对象

汇编不存在对象概念,都是返回指针.
是否读*指针,取决与你后面的代码.
如果获得对象没有使用.编译器会把返回指针的汇编都省略.
2014-8-17 14:02
0
雪    币: 167
活跃值: (120)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
8
姐姐,好久不见 想你了呢~
2014-8-17 14:08
0
游客
登录 | 注册 方可回帖
返回
//