亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? csdn_文檔中心_c++類機制的實現細節.htm

?? csdn10年中間經典帖子
?? HTM
?? 第 1 頁 / 共 2 頁
字號:
          <TD align=middle height=5></TD>
          <TD align=middle width=500></TD></TR>
        <TR>
          <TD align=middle bgColor=#003399 height=10><FONT 
            color=#ffffff>標題</FONT></TD>
          <TD><B>&nbsp;&nbsp;&nbsp;&nbsp;C++類機制的實現細節</B>&nbsp;&nbsp;&nbsp;&nbsp;nightsuns(原作) 
          </TD></TR>
        <TR>
          <TD align=middle height=5></TD>
          <TD align=middle width=500></TD></TR>
        <TR>
          <TD align=middle bgColor=#003399><FONT color=#ffffff>關鍵字</FONT></TD>
          <TD width=500>&nbsp;&nbsp;&nbsp;&nbsp;類機制 實現細節</TD></TR>
        <TR>
          <TD align=middle height=5></TD>
          <TD align=middle width=500></TD></TR></TBODY></TABLE><!--文章說明信息結束//-->
      <TABLE border=0 width=600>
        <TBODY>
        <TR>
          <TD align=left><BR>
            <P><SPAN id=yuyuzi>為了搞清楚VC中類的實現專門寫了一個最簡單的類,用來觀察它的實現過程,代碼如下:<BR>// 
            test.cpp : Defines the entry point for the console 
            application.<BR>//<BR><BR>#include "stdafx.h"<BR>#include 
            "CTest.h"<BR><BR>int main(int argc, char* argv[])<BR>{<BR>CTest 
            aTest;<BR>aTest.a(1,2);<BR>return 0;<BR>}<BR><BR>// CTest.h: 
            interface for the CTest 
            class.<BR>//<BR>//////////////////////////////////////////////////////////////////////<BR><BR>#if 
            !defined(AFX_CTEST_H__2CCCDCFC_6C3A_48BC_9CD0_E7A8E63431D9__INCLUDED_)<BR>#define 
            AFX_CTEST_H__2CCCDCFC_6C3A_48BC_9CD0_E7A8E63431D9__INCLUDED_<BR><BR>#if 
            _MSC_VER &gt; 1000<BR>#pragma once<BR>#endif // _MSC_VER &gt; 
            1000<BR><BR>class CTest <BR>{<BR>public:<BR>CTest();<BR>virtual 
            ~CTest();<BR><BR>public:<BR>void b();<BR>void a(int one,int 
            two);<BR>};<BR><BR>#endif // 
            !defined(AFX_CTEST_H__2CCCDCFC_6C3A_48BC_9CD0_E7A8E63431D9__INCLUDED_)<BR><BR><BR>// 
            CTest.cpp: implementation of the CTest 
            class.<BR>//<BR>//////////////////////////////////////////////////////////////////////<BR><BR>#include 
            "stdafx.h"<BR>#include 
            "CTest.h"<BR><BR>//////////////////////////////////////////////////////////////////////<BR>// 
            Construction/Destruction<BR>//////////////////////////////////////////////////////////////////////<BR><BR>CTest::CTest()<BR>{<BR><BR>}<BR><BR>CTest::~CTest()<BR>{<BR><BR>}<BR><BR>void 
            CTest::b()<BR>{<BR>printf("b is be called by a");<BR>}<BR><BR>void 
            CTest::a(int one,int two)<BR>{<BR>printf("call 
            b");<BR>b();<BR>}<BR><BR><BR><BR><BR>下面是相應的反匯編代碼:<BR>--- 
            D:\myown\test\test.cpp -----------------------------------------------------------------------------------------------<BR>1:  // 
            test.cpp : Defines the entry point for the console 
            application.<BR>2:  //<BR>3:<BR>4:  #include 
            "stdafx.h"<BR>5:  #include "CTest.h"<BR>6:<BR>7:  int main(int argc, 
            char* argv[])<BR>8:  {<BR>00401050  push    ebp<BR>00401051  mov     
            ebp,esp<BR>00401053  push    0FFh<BR>00401055  push    offset 
            __ehhandler$_main (00410c89)<BR>0040105A  mov     
            eax,fs:[00000000]<BR>00401060  push    eax<BR>00401061  mov     
            dword ptr fs:[0],esp<BR>00401068  sub     esp,48h<BR>0040106B  
            push    ebx<BR>0040106C  push    esi<BR>0040106D  
            push    edi<BR>0040106E  lea     edi,[ebp-54h]<BR>00401071  mov     
            ecx,12h<BR>00401076  mov     eax,0CCCCCCCCh<BR>0040107B  rep 
            stos  dword ptr [edi]<BR><BR>9:    CTest aTest;<BR>0040107D  lea     
            ecx,[ebp-10h] //這是用來保存aTest的this指針,因為是局部變量所以是保存在[ebp-10h]中<BR>00401080  
            call    @ILT+30(CTest::CTest) 
            (00401023) //調用aTest的構造函數,由編譯器自動產生的CALL<BR>00401085  mov     dword 
            ptr [ebp-4],0<BR><BR>10:    aTest.a(1,2);<BR>0040108C  
            push    2<BR>0040108E  push    1<BR>00401090  lea     
            ecx,[ebp-10h] //把aTest的this指針用ecx進行傳遞<BR>00401093  
            call    @ILT+5(CTest::a) (0040100a) <BR>11:    return 
            0;<BR>00401098  mov     dword ptr [ebp-14h],0<BR>0040109F  mov     
            dword ptr [ebp-4],0FFFFFFFFh<BR>004010A6  lea     
            ecx,[ebp-10h] //同樣是this指針<BR>004010A9  
            call    @ILT+25(CTest::~CTest) 
            (0040101e) //aTest的生存周期到了,自動調用析構函數,同樣是由編譯器分析之后自加上去<BR>004010AE  
            mov     eax,dword ptr [ebp-14h]<BR>12:  }<BR>004010B1  mov     
            ecx,dword ptr [ebp-0Ch]<BR>004010B4  mov     dword ptr 
            fs:[0],ecx<BR>004010BB  pop     edi<BR>004010BC  pop     
            esi<BR>004010BD  pop     ebx<BR>004010BE  add     
            esp,54h<BR>004010C1  cmp     ebp,esp<BR>004010C3  call    __chkesp 
            (00401670)<BR>004010C8  mov     esp,ebp<BR>004010CA  pop     
            ebp<BR>004010CB  
            ret<BR><BR>下面再來分析一下VC中對函數的調用:<BR>可以看到上面有對三個函數的調用分別為:<BR>00401080  
            call    @ILT+30(CTest::CTest) (00401023)<BR>00401093  
            call    @ILT+5(CTest::a) (0040100a)<BR>004010A9  
            call    @ILT+25(CTest::~CTest) 
            (0040101e)<BR><BR>可以看到他們都跳到了以@ILT為基的一個地址去了,那么跳過去之后可以看到:<BR>@ILT+0(??_GCTest@@UAEPAXI@Z):<BR>00401005  
            jmp     CTest::`scalar deleting destructor' 
            (00401130)<BR>@ILT+5(?a@CTest@@QAEXHH@Z):<BR>0040100A  jmp     
            CTest::a (00401230)<BR>@ILT+10(_main):<BR>0040100F  jmp     main 
            (00401050)<BR>@ILT+15(?b@CTest@@QAEXXZ):<BR>00401014  jmp     
            CTest::b (004011e0)<BR>@ILT+20(??_GCTest@@UAEPAXI@Z):<BR>00401019  
            jmp     CTest::`scalar deleting destructor' 
            (00401130)<BR>@ILT+25(??1CTest@@UAE@XZ):<BR>0040101E  jmp     
            CTest::~CTest (004011a0)<BR>@ILT+30(??0CTest@@QAE@XZ):<BR>00401023  
            jmp     CTest::CTest 
            (004010f0)<BR><BR>這個@ILT其實就是一個靜態的表,它記錄了一些函數的入口然后跳過去,每個跳轉jmp占一個字節,然后就是一個四字節的內存地址,所以加起為五個字節,這樣就實現了類的機制。<BR><BR>下面再來分析一下,類的成員函數調用另一成員函數的情況:<BR><BR>27:  
            void CTest::a(int one,int two)<BR>28:  {<BR>00401230  
            push    ebp<BR>00401231  mov     ebp,esp<BR>00401233  sub     
            esp,44h<BR>00401236  push    ebx<BR>00401237  
            push    esi<BR>00401238  push    edi<BR>00401239  
            push    ecx<BR>0040123A  lea     edi,[ebp-44h]<BR>0040123D  mov     
            ecx,11h<BR>00401242  mov     eax,0CCCCCCCCh<BR>00401247  rep 
            stos  dword ptr [edi]<BR>00401249  pop     ecx<BR>0040124A  mov     
            dword ptr [ebp-4],ecx<BR>29:    printf("call b");<BR>0040124D  
            push    offset string "call b" (00422038)<BR>00401252  
            call    printf (00401830)<BR>00401257  add     esp,4<BR>30:    
            b();<BR>0040125A  mov     ecx,dword ptr [ebp-4] 
            //不要想這里的[ebp-4]肯定是this指針,<BR>0040125D  call    @ILT+15(CTest::b) 
            (00401014) // 又是@ILT靜態表格<BR>31:  }<BR>00401262  pop     
            edi<BR>00401263  pop     esi<BR>00401264  pop     ebx<BR>00401265  
            add     esp,44h<BR>00401268  cmp     ebp,esp<BR>0040126A  
            call    __chkesp (00401670)<BR>0040126F  mov     
            esp,ebp<BR>00401271  pop     ebp<BR>00401272  ret     
            8   //由于是STDCALLR所以棧是由程序自己來平衡的<BR></SPAN></P><BR></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
<TABLE align=center bgColor=#006699 border=0 cellPadding=0 cellSpacing=0 
width=770>
  <TBODY>
  <TR bgColor=#006699>
    <TD align=middle bgColor=#006699 id=white><FONT 
    color=#ffffff>對該文的評論</FONT></TD>
    <TD align=middle>
      <SCRIPT src="CSDN_文檔中心_C++類機制的實現細節.files/readnum.htm"></SCRIPT>
    </TD></TR></TBODY></TABLE><BR>
<DIV align=center>
<TABLE align=center bgColor=#cccccc border=0 cellPadding=2 cellSpacing=1 
width=770>
  <TBODY>
  <TR>
    <TH bgColor=#006699 id=white><FONT 
color=#ffffff>我要評論</FONT></TH></TR></TBODY></TABLE></DIV>
<SCRIPT language=javascript>
	<!--
	function isEmpty(s)
	{  
		return ((s == null) || (s.length == 0))
	}
	function fubmitok()
	{
		if (isEmpty(document.add_critique.Critique_Content.value))
		{
			alert('評論不能為空!!!!')   ;
			return false;
		}
		document.add_critique.submit();
	}
	//-->
	</SCRIPT>

<DIV align=center>
<TABLE border=0 width=770>
  <TBODY>
  <TR>
    <TD>
      <FORM action=Critique_Sql.asp method=post name=add_critique><INPUT 
      name=Critique_State type=hidden value=add> &nbsp;&nbsp;評論人:xyj0323 
      &nbsp;&nbsp;評論:<BR>&nbsp;&nbsp;<TEXTAREA cols=104 name=Critique_Content rows=8></TEXTAREA><BR>&nbsp;&nbsp;<INPUT name=ubmit onclick=javascript:fubmitok(); type=button value=發表評論> 
      <INPUT name=Topic_id type=hidden value=27050> <INPUT name=From type=hidden 
      value=/Develop/Build_Article.asp?id=27050> 
</FORM></TD></TR></TBODY></TABLE></DIV><BR>
<HR noShade SIZE=1 width=770>

<TABLE border=0 cellPadding=0 cellSpacing=0 width=500>
  <TBODY>
  <TR align=middle>
    <TD height=10 vAlign=bottom><A 
      href="http://www.csdn.net/intro/intro.asp?id=2">網站簡介</A> - <A 
      href="http://www.csdn.net/intro/intro.asp?id=5">廣告服務</A> - <A 
      href="http://www.csdn.net/map/map.shtm">網站地圖</A> - <A 
      href="http://www.csdn.net/help/help.asp">幫助信息</A> - <A 
      href="http://www.csdn.net/intro/intro.asp?id=2">聯系方式</A> - <A 
      href="http://www.csdn.net/english">English</A> </TD>
    <TD align=middle rowSpan=3><A 
      href="http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001032100010"><IMG 
      border=0 height=48 src="CSDN_文檔中心_C++類機制的實現細節.files/biaoshi.gif" 
      width=40></A></TD></TR>
  <TR align=middle>
    <TD vAlign=top>百聯美達美公司 版權所有 京ICP證020026號</TD></TR>
  <TR align=middle>
    <TD vAlign=top><FONT face=Verdana>Copyright &copy; CSDN.net, Inc. All rights 
      reserved</FONT></TD></TR>
  <TR>
    <TD height=15></TD>
    <TD></TD></TR></TBODY></TABLE></DIV>
<DIV></DIV><!--內容結束//--><!--結束//--></BODY></HTML>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品麻豆欧美日韩ww| 久久99精品国产91久久来源| 亚欧色一区w666天堂| 蓝色福利精品导航| 91福利国产精品| 国产校园另类小说区| 日韩精品电影一区亚洲| 成人精品小蝌蚪| 精品国免费一区二区三区| 亚洲欧洲综合另类| 日韩免费性生活视频播放| 国产精品麻豆视频| 懂色中文一区二区在线播放| 欧美一区二区三区精品| 一区二区不卡在线视频 午夜欧美不卡在| 奇米影视7777精品一区二区| 一本大道久久a久久精二百| 国产日韩欧美综合在线| 久国产精品韩国三级视频| 欧美日韩一区高清| 一区二区欧美视频| 色爱区综合激月婷婷| 国产精品国产三级国产专播品爱网 | 91网站视频在线观看| 26uuuu精品一区二区| 美女精品自拍一二三四| 日韩一级欧美一级| 蜜桃视频在线一区| 欧美成人video| 理论电影国产精品| 精品国产麻豆免费人成网站| 日韩二区三区在线观看| 欧美乱熟臀69xxxxxx| 亚洲国产日产av| 欧美日韩成人综合天天影院| 亚洲国产人成综合网站| 在线播放欧美女士性生活| 亚洲成av人片在线观看无码| 欧美色综合天天久久综合精品| 亚洲男人的天堂在线aⅴ视频 | 韩国欧美国产1区| 精品国产三级电影在线观看| 极品少妇xxxx精品少妇偷拍| 久久九九久精品国产免费直播| 国产成人无遮挡在线视频| 国产亚洲综合av| av在线不卡观看免费观看| 亚洲女人****多毛耸耸8| 在线观看网站黄不卡| 性感美女极品91精品| 欧美一区在线视频| 国产一区在线看| 国产精品传媒入口麻豆| 色八戒一区二区三区| 奇米亚洲午夜久久精品| 国产亚洲欧美日韩日本| 99视频在线精品| 亚洲成在线观看| 日韩精品一区国产麻豆| 国产91在线观看| 国产一区二区三区黄视频| 欧美高清一级片在线观看| 99精品欧美一区二区三区小说| 亚洲国产一区二区在线播放| 日韩精品资源二区在线| 北岛玲一区二区三区四区| 一区二区三区资源| 精品毛片乱码1区2区3区| 不卡视频在线看| 日本一道高清亚洲日美韩| 国产肉丝袜一区二区| 在线观看欧美精品| 国产一区二区三区四区五区美女 | 国产一区二三区| 亚洲免费观看高清完整版在线观看熊 | 久久av老司机精品网站导航| 国产精品成人免费在线| 欧美精三区欧美精三区| eeuss影院一区二区三区| 日本怡春院一区二区| 亚洲免费在线电影| 欧美tk丨vk视频| 欧美日韩在线三区| 国产suv一区二区三区88区| 天天做天天摸天天爽国产一区| 国产三级一区二区| 7777精品久久久大香线蕉| 96av麻豆蜜桃一区二区| 国产在线精品一区二区三区不卡| 一区二区三区在线视频播放 | 欧美成人精品二区三区99精品| 99r国产精品| 国产成人夜色高潮福利影视| 日本亚洲欧美天堂免费| 亚洲影院久久精品| 中文字幕电影一区| 久久一日本道色综合| 日韩三级在线免费观看| 欧美中文字幕一二三区视频| www.av精品| 国产精品自拍一区| 看电视剧不卡顿的网站| 午夜精品在线看| 亚洲图片一区二区| 亚洲影院久久精品| 亚洲欧美日韩成人高清在线一区| 欧美极品xxx| 国产日本欧洲亚洲| 久久精品亚洲乱码伦伦中文| xf在线a精品一区二区视频网站| 欧美日韩免费视频| 欧美性受xxxx黑人xyx| 日本高清不卡视频| 在线免费观看一区| 欧美在线不卡一区| 欧美专区在线观看一区| 91久久人澡人人添人人爽欧美| 日本韩国欧美在线| 欧美色图第一页| 欧美一区二区三区小说| 91精品国产乱码| 日韩一本二本av| 亚洲精品在线三区| 国产午夜久久久久| 亚洲欧洲韩国日本视频| 亚洲卡通动漫在线| 亚洲高清免费在线| 日本成人在线一区| 麻豆视频一区二区| 国产成人亚洲精品青草天美| 国产91丝袜在线播放| 波多野结衣一区二区三区| 91女神在线视频| 欧美日韩一区二区在线视频| 制服丝袜在线91| www精品美女久久久tv| 久久久国产精品麻豆| 成人免费小视频| 视频在线观看91| 国内成人免费视频| 95精品视频在线| 欧美一区二区视频网站| 亚洲精品在线免费观看视频| 国产精品久久久久久一区二区三区| 一区二区三区色| 美女脱光内衣内裤视频久久影院| 国产在线视频一区二区| 99在线精品视频| 欧美一级国产精品| 亚洲欧美在线视频观看| 亚洲成人免费视频| 国产乱子伦一区二区三区国色天香| av日韩在线网站| 欧美一区二区美女| 中文字幕一区视频| 免费观看成人av| 91色九色蝌蚪| 久久久99久久| 奇米四色…亚洲| 91国内精品野花午夜精品| 精品国产乱码久久久久久牛牛| 亚洲码国产岛国毛片在线| 青草av.久久免费一区| 91在线国内视频| 久久美女艺术照精彩视频福利播放| 一区二区三区蜜桃| 国产91丝袜在线播放九色| 欧美裸体一区二区三区| 亚洲视频一区二区免费在线观看| 日韩成人午夜精品| 91蝌蚪porny九色| 日本一区二区三区四区在线视频| 五月婷婷综合在线| 91免费看片在线观看| 国产午夜精品一区二区| 蜜桃av噜噜一区二区三区小说| 97se亚洲国产综合自在线不卡| 26uuu国产在线精品一区二区| 天天av天天翘天天综合网 | 欧美一级黄色大片| 亚洲香蕉伊在人在线观| 9l国产精品久久久久麻豆| 欧美sm美女调教| 蜜桃在线一区二区三区| 欧美高清视频不卡网| 一区二区三区不卡在线观看 | 精品国产乱码久久久久久夜甘婷婷| 亚洲成人动漫av| 在线观看免费亚洲| 亚洲免费观看在线观看| av高清不卡在线| 国产精品国产馆在线真实露脸 | 国产激情精品久久久第一区二区| 69堂亚洲精品首页| 亚洲va欧美va人人爽午夜| 色婷婷av一区二区三区gif| 一区在线观看免费| 91社区在线播放| 亚洲一区二区三区激情| 欧美亚洲尤物久久|