新聞中心
構造函數(shù)是開發(fā)過程中的一種特殊的方法,其主要用來在創(chuàng)建對象時的初始化對象,也就是對象成員變量賦初始值,在C++中進行C++構造函數(shù)時,無論什么時候,只要創(chuàng)建類或結構,就會調(diào)用它的構造函數(shù)

創(chuàng)新互聯(lián)建站是一家專業(yè)提供新城企業(yè)網(wǎng)站建設,專注與成都網(wǎng)站制作、做網(wǎng)站、H5場景定制、小程序制作等業(yè)務。10年已為新城眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。
但是程序通過了編譯檢查并不表示錯誤已經(jīng)不存在了,在“錯誤”的大家庭里,“語法錯誤”的地位只能算是小弟弟。級別高的錯誤通常隱藏得很深,就象狡猾的罪犯,想逮住他可不容易。
根據(jù)經(jīng)驗,不少難以察覺的程序錯誤是由于變量沒有被正確初始化或清除造成的,而初始化和清除工作很容易被人遺忘。Stroustrup在設計C++語言時充分考慮了這個問題并很好地予以解決:把對象的初始化工作放在C++構造函數(shù)中,把清除工作放在析構函數(shù)中。當對象被創(chuàng)建時,構造函數(shù)被自動執(zhí)行。當對象消亡時,析構函數(shù)被自動執(zhí)行。這下就不用擔心忘了對象的初始化和清除工作。
構造函數(shù)與析構函數(shù)的名字不能隨便起,必須讓編譯器認得出才可以被自動執(zhí)行。Stroustrup的命名方法既簡單又合理:讓構造函數(shù)、析構函數(shù)與類同名,由于析構函數(shù)的目的與構造函數(shù)的相反,就加前綴‘~’以示區(qū)別。
除了名字外,構造函數(shù)與析構函數(shù)的另一個特別之處是沒有返回值類型,這與返回值類型為void的函數(shù)不同。C++構造函數(shù)與析構函數(shù)的使命非常明確,就象出生與死亡,光溜溜地來光溜溜地去。如果它們有返回值類型,那么編譯器將不知所措。為了防止節(jié)外生枝,干脆規(guī)定沒有返回值類型。(以上典故參考了文獻[Eekel, p55-p56])
C++構造函數(shù)有個特殊的初始化方式叫“初始化表達式表”(簡稱初始化表)。初始化表位于函數(shù)參數(shù)表之后,卻在函數(shù)體 {} 之前。這說明該表里的初始化工作發(fā)生在函數(shù)體內(nèi)的任何代碼被執(zhí)行之前。
構造函數(shù)初始化表的使用規(guī)則:
如果類存在繼承關系,派生類必須在其初始化表里調(diào)用基類的構造函數(shù)。
例如:
- class F
- {
- public:
- F(int x, int y); // 構造函數(shù)
- private:
- int m_x, m_y;
- int m_i, m_j;
- }
類的數(shù)據(jù)成員的初始化可以采用初始化表或函數(shù)體內(nèi)賦值兩種方式,這兩種方式的效率不完全相同,非內(nèi)部數(shù)據(jù)類型的成員對象應當采用***種方式初始化,以獲取更高的效率。
【編輯推薦】
- C與C++中標準輸入實現(xiàn)方式上的一點區(qū)別
- C++編譯器如何對Const常量進行分配存儲空間
- C++類庫設計的基本構思與方法
- 玩轉C++語言的幾種方法
- 如何更好的進行C++代碼編制
文章題目:如何更好的進行C++構造函數(shù)
文章轉載:http://fisionsoft.com.cn/article/ccsoise.html


咨詢
建站咨詢
