分享
 
 
 

c++类研究(1)普通的c++类

王朝c/c++·作者佚名  2007-01-19
窄屏简体版  字體: |||超大  

#include <iostream.h>

class cppclass

{

private:

int i;

public:

cppclass();

void cppout();

};

cppclass::cppclass()

{

i=5;

}

void cppclass::cppout()

{

cout<<i;

}

void main()

{

cppclass a;

a.cppout();

}

@ILT+0(??0cppclass@@QAE@XZ):

00401005 E9 26 00 00 00 jmp cppclass::cppclass (00401030)

@ILT+5(?cppout@cppclass@@QAEXXZ):

0040100A E9 61 00 00 00 jmp cppclass::cppout (00401070)

@ILT+10(_main):

0040100F E9 AC 00 00 00 jmp main (004010c0)

1: #include <iostream.h>

2: class cppclass

3: {

4: private:

5: int i;

6: public:

7: cppclass();

8: void cppout();

9: };

10: cppclass::cppclass()

11: {

00401030 55 push ebp

00401031 8B EC mov ebp,esp

00401033 83 EC 44 sub esp,44h

00401036 53 push ebx

00401037 56 push esi

00401038 57 push edi

00401039 51 push ecx

0040103A 8D 7D BC lea edi,[ebp-44h]

0040103D B9 11 00 00 00 mov ecx,11h

00401042 B8 CC CC CC CC mov eax,0CCCCCCCCh

00401047 F3 AB rep stos dword ptr [edi]

00401049 59 pop ecx

0040104A 89 4D FC mov dword ptr [ebp-4],ecx

12: i=5;

0040104D 8B 45 FC mov eax,dword ptr [ebp-4]

00401050 C7 00 05 00 00 00 mov dword ptr [eax],5

13: }

00401056 8B 45 FC mov eax,dword ptr [ebp-4]

00401059 5F pop edi

0040105A 5E pop esi

0040105B 5B pop ebx

0040105C 8B E5 mov esp,ebp

0040105E 5D pop ebp

0040105F C3 ret

14: void cppclass::cppout()

15: {

00401070 55 push ebp

00401071 8B EC mov ebp,esp

00401073 83 EC 44 sub esp,44h

00401076 53 push ebx

00401077 56 push esi

00401078 57 push edi

00401079 51 push ecx

0040107A 8D 7D BC lea edi,[ebp-44h]

0040107D B9 11 00 00 00 mov ecx,11h

00401082 B8 CC CC CC CC mov eax,0CCCCCCCCh

00401087 F3 AB rep stos dword ptr [edi]

00401089 59 pop ecx

0040108A 89 4D FC mov dword ptr [ebp-4],ecx

16: cout<<i;

0040108D 8B 45 FC mov eax,dword ptr [ebp-4]

00401090 8B 08 mov ecx,dword ptr [eax]

00401092 51 push ecx

00401093 B9 C0 89 42 00 mov ecx,offset cout (004289c0)

00401098 E8 73 00 00 00 call ostream::operator<< (00401110)

17: }

0040109D 5F pop edi

0040109E 5E pop esi

0040109F 5B pop ebx

004010A0 83 C4 44 add esp,44h

004010A3 3B EC cmp ebp,esp

004010A5 E8 B6 23 00 00 call __chkesp (00403460)

004010AA 8B E5 mov esp,ebp

004010AC 5D pop ebp

004010AD C3 ret

18: void main()

19: {

004010C0 55 push ebp

004010C1 8B EC mov ebp,esp

004010C3 83 EC 44 sub esp,44h

004010C6 53 push ebx

004010C7 56 push esi

004010C8 57 push edi

004010C9 8D 7D BC lea edi,[ebp-44h]

004010CC B9 11 00 00 00 mov ecx,11h

004010D1 B8 CC CC CC CC mov eax,0CCCCCCCCh

004010D6 F3 AB rep stos dword ptr [edi]

20: cppclass a;

004010D8 8D 4D FC lea ecx,[ebp-4]

004010DB E8 25 FF FF FF call @ILT+0(cppclass::cppclass) (00401005)

21: a.cppout();

004010E0 8D 4D FC lea ecx,[ebp-4]

004010E3 E8 22 FF FF FF call @ILT+5(cppclass::cppout) (0040100a)

22: }

004010E8 5F pop edi

004010E9 5E pop esi

004010EA 5B pop ebx

004010EB 83 C4 44 add esp,44h

004010EE 3B EC cmp ebp,esp

004010F0 E8 6B 23 00 00 call __chkesp (00403460)

004010F5 8B E5 mov esp,ebp

004010F7 5D pop ebp

004010F8 C3 ret

在main()函数运行时,创建类时跳转到了类的构建函数调用完返回!

通过例子可以看出,函数一直在调用类的成员函数,类在那儿进行初始化?

为此设计这样例子,

00401093 B9 C0 89 42 00 mov ecx,offset cout (004289c0)

00401098 E8 73 00 00 00 call ostream::operator<< (00401110)

004010E3 B9 C0 89 42 00 mov ecx,offset cout (004289c0)

004010E8 E8 23 00 00 00 call ostream::operator<< (00401110)

可以看到

004289c0 地址是初始化i的地址。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有