• <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 閱讀(662) 評論(0)  編輯 收藏 引用

            久久精品国产亚洲欧美| 久久亚洲精品国产亚洲老地址 | 久久被窝电影亚洲爽爽爽| 久久精品一区二区| 久久99这里只有精品国产| 久久不见久久见免费视频7| 狠狠精品干练久久久无码中文字幕 | 91精品国产91热久久久久福利| 色欲综合久久躁天天躁| 色综合合久久天天综合绕视看| 久久九九兔免费精品6| 久久亚洲精品中文字幕| 久久人人爽人人澡人人高潮AV| 久久精品国产99久久久| 久久婷婷色香五月综合激情 | 久久91精品综合国产首页| 亚洲人成伊人成综合网久久久| 久久se精品一区二区影院| 久久99精品国产| 少妇久久久久久久久久| 区久久AAA片69亚洲| 香蕉久久永久视频| 欧美激情精品久久久久久久九九九| 国内精品九九久久久精品| 狠狠色丁香久久婷婷综合| 久久99九九国产免费看小说| 一本久久综合亚洲鲁鲁五月天| 国产99久久久国产精品~~牛| 国产精品久久久福利| 精品久久久久久国产潘金莲| 亚洲精品国产美女久久久| 久久精品国产亚洲AV久| 久久99热这里只有精品国产| 久久久精品国产免大香伊| 久久综合给合久久狠狠狠97色| 久久免费的精品国产V∧| 久久青青草原精品国产| 精品久久久久香蕉网| 欧美日韩中文字幕久久伊人| 91久久精品无码一区二区毛片| 亚洲综合久久综合激情久久|