• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            happem

            為什么需要構造函數和析構函數

             

            編譯器無法預期一個程序在執行過程中會在何時創建一些什么對象,而只能根據當時的上下文要求創建,對象的初始化最好能夠通過運行時執行一個函數來完成,而且是在對象創建的同時,這個函數就是構造函數,同樣,對象在完成其使命的時候能夠通過一個函數來銷毀,這就是析構函數。

            當給一個對象分配好原始內存空間的時候,這個對象就應該算創建起來了。只不過它還處于一種“原始狀態”,即末初始化的,不良的狀態,如果把這樣的內存直接拿來使用,除非第一個操作是賦值,否則極有可能出錯。例如:

               Long long1;         //局部變量

               Count<

               Char*pstr=(char*)malloc(1024);

               Cout<

            因此,創建一個變量或動態對象時一定不要忘記初始化。 初始化就是在對象創建的同時使用初值直接填充對象的內存單元,因此,不會有數據類型轉換等中間過程,也就不會產生臨時對象,而賦值則是在對象創建好后任何時候都可以調用的而且可以多次調用的函數,由于它調用的是“=”運算符,因此可能需要進行類型轉換,即會產生臨時對象。

            C++對象可以使用構造函數來初始化,構造函數是任何對象創建時自動調用的第一個成員函數,也是為每個對象僅調用一次的成員函數,所以構造函數的作用就是:當對象的內存分配好后把它原始狀態變成良好的可用的狀態。

            有的程序員可能認為:雖然我沒有在構造函數中初始化數據成員,但是我在聲明一個對象后馬上調用它的set-XXX()函數來初始化它的每一個成員,效果也是一樣的。

            最好為每個類顯式地定義構造函數和析構函數,即使它們暫時空著,尤其是當類含有指針成員或引用成員的時候。

            構造函數的另一重要用途就是給一些可能可能存在的隱含成員如vptr創造一個初始化的機會,否則虛擬機將不能保證實現,每當此時,如果程序員沒有為一個多態類顯式地定義默認構造函數、拷貝構造函數、析構函數或拷貝賦值函數,那么編譯器會自動得生成相應的函數,它們都是public inline的,并在其中插入正確初始化或修改vptr數據成員值的代碼,而且確保基類對象和派生類對象構造時及在它們之間拷貝時vptr能夠指向或重新指向恰當的vtable,這樣的4個函數分布叫非平凡默認構造函數、非平凡拷貝構造函數、非平凡析構函數和非平凡拷貝賦值函數。www.lirenedu.org

            posted on 2012-09-03 10:56 happem 閱讀(651) 評論(0)  編輯 收藏 引用

            亚洲精品乱码久久久久久蜜桃| 久久久精品2019免费观看| 久久综合精品国产二区无码| 色偷偷久久一区二区三区| 亚洲人成网亚洲欧洲无码久久| 久久久久久国产精品免费免费| 久久亚洲精品无码aⅴ大香| 99国内精品久久久久久久 | 婷婷久久综合九色综合98| 欧美一级久久久久久久大| 韩国三级大全久久网站| 亚洲午夜久久久久久久久电影网 | 久久精品国产99久久丝袜| 亚洲欧美一区二区三区久久| 狠狠色噜噜狠狠狠狠狠色综合久久| 91精品国产综合久久香蕉| 久久久亚洲AV波多野结衣| 一本色道久久综合狠狠躁篇| 久久精品国产亚洲av影院| 亚洲伊人久久成综合人影院 | 狠狠久久亚洲欧美专区| 久久久无码精品亚洲日韩京东传媒| 91精品国产91久久| 久久超碰97人人做人人爱| 国产精品久久久久久久久软件| 99999久久久久久亚洲| 久久国产精品成人免费| 亚洲欧洲日产国码无码久久99| 国产福利电影一区二区三区,免费久久久久久久精 | 久久久噜噜噜久久中文字幕色伊伊| 久久精品a亚洲国产v高清不卡| 婷婷久久综合九色综合绿巨人| 久久精品国产免费一区| 国产精品久久久久国产A级| 久久精品国产亚洲av高清漫画| 久久国内免费视频| 亚洲欧美国产日韩综合久久| 久久青青草原精品国产软件| 久久婷婷五月综合成人D啪 | 亚洲av成人无码久久精品| 囯产精品久久久久久久久蜜桃|