VC++函数,类函数调用过程

VC++函数,类函数调用过程,第1张

VC++函数,类函数调用过程,第2张

实现C++的反射例子。编辑考试:写下C++反射机制过程中函数的调用过程。这个特性用来写一个通用的函数转发器,可以调用任何API函数。
//初始化映射工厂
InitializeMappingFactory();
imoke _ method (null,& messagebox,null," hello world。",“你好”,MB _ OK);
后面加什么都不会出错,方便绕过编译器的参数检查,比如:
IMOKE _ METHOD (null,& messagebox,null,“hello world。”,“你好”,MB_OK,“123456”,“7892737”)。
没有问题。
好了,跑题了。下面进入正题:
1。无返回值的函数调用方法
A .参数为普通变量,即:int long ulong和指针
void setvalue(long f _ val)
{
f .调用的方法为
push XXX
call setvalue
b .参数为类对象,如:cstring
void setvalue(STD::string f _ val)
{
f _ val是通过被
esp-->调用生成临时对象STD::string
call setvalue
c .如果参数调用
void setvalue(STD::string & f _ Val)
{
f _ Val由movax、[ebp+8]
}
setvalue(XXX)获得;的调用方法是
Lea eax,XXX
Push eax
Call SetValue
d .如果是调用方法的类,不同的是ECX->指向一个对象,如下图所示
void XXX::SetValue(long f _ Val)
{
ecx-> XXX object
f _ Val是由movax、[EBP+8]
}
a A
call xxx::setvalue
void XXX::setvalue(STD::string f _ Val)
{
ecx-> XXX对象
f_Val由leaeax获得,[EBP+8由
esp->调用生成XXX的临时对象std::string
mov ecx,A
call XXX::setvalue
void XXX::setvalue(STD::string & f _ Val)[/br

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » VC++函数,类函数调用过程

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情