首页
社区
课程
招聘
[讨论]c++ 的this 指针
发表于: 2008-11-21 14:58 5531

[讨论]c++ 的this 指针

2008-11-21 14:58
5531
小弟学了一段时间的win SDK 编程,准备转入MFC 的学习.以前学过半学期的C++,但是一直没有怎么看,所以也忘了不少..

最近在学习MFC 的过程中发现了我以前的一个错误的认识,我一直以为C++的this指针是由 C++ 编译器,在编译的过程中
记录的,最后会在编译时会把相应的对象地址 编到代码中去.后来我做个实验:
我用MFC 新建了个工程,然后将
"C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC"(存放了MFC 的源码)
这个目录移到了其它地方.然后编译发现依然能通过,也就是说VC++根本不编译 这些MFC代码(
怪不得我每次在学习那些代码时,想加入MessageBox,始终都不能成功运行的原因了)

可是在MicroSoft给我们MFC 基类中用了很多 this指针,这个this是如何指向 “未来的对象”的呢。

我的意思用一句说就是:虚函数是通过 虚函数表,还实现调用 "未来的函数"的,那这个this指针不是通过 C++ 编译器记录的方式实现的,那是如何实现的呢???

望高人指点下!!!!!!!!!!!!!!!!!!!!

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 1946
活跃值: (243)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
2
LZ竟然能从this指针扯到MFC去.
MS编译MFC并不是编译MFC源代码,而是直接link MFC Library.

你走火入魔了
2008-11-21 15:17
0
雪    币: 267
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
是啊,我是由MFC 的学习,突然想到了我以前对 C++ 的this 指针的理解是不对的,所以想真正的
理解this 指针,以及,C++ 编译器对 this 指针的大致 处理方式 ,希望有人指教..

谢谢你的回答!!!!
2008-11-21 16:57
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
4
this就是一个指向当前对象结构体的指针,不论从概念还是从反汇编的角度
2008-11-21 19:07
0
雪    币: 63
活跃值: (17)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
5
class foo
{
};

this -> foo *const _Me_;

this 是C++内建,学MFC走火入魔了,可怜的娃
2008-11-22 11:13
0
雪    币: 412
活跃值: (30)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
6
this指针和MFC没什么关系,只要是C++的编译器都有this指针这个用法。
建议回头看看C++的书重新认识一下。
2008-11-23 00:05
0
雪    币: 267
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
嗯,多谢各位的帮助!!!!

经过几天的 苦恩冥想 我对 this指针又有了新的认识.. 不知道对不对。。还望各位多多指正

class test
{
     void Fun(){}
};

这个Fun()被编译时会被编译成

Fun(test* this)

test object
object.Fun()  <==> Fun(&object)--->这时 this 就是&object 了
2008-11-23 18:56
0
雪    币: 125
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
寄存器ecx
2008-11-27 18:33
0
雪    币: 182
活跃值: (55)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
9
就是告诉类函数要对哪个对象进行操作。
2008-11-27 23:10
0
雪    币: 271
活跃值: (18)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
10
反汇编一下,就很清楚了
2008-11-28 01:11
0
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
11
写个小class,然后反汇编一下,对照类在内存中的布局,就很清楚了.
2008-11-28 11:35
0
雪    币: 124
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
反汇编一下吧,都明白了
2008-12-6 19:06
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
this指向的当前类的对象指针
2008-12-8 11:46
0
游客
登录 | 注册 方可回帖
返回
//