構(gòu)造函數(shù)與析構(gòu)函數(shù)

構(gòu)造函數(shù)與析構(gòu)函數(shù)

ID:34776488

大?。?32.63 KB

頁數(shù):21頁

時間:2019-03-10

構(gòu)造函數(shù)與析構(gòu)函數(shù)_第1頁
構(gòu)造函數(shù)與析構(gòu)函數(shù)_第2頁
構(gòu)造函數(shù)與析構(gòu)函數(shù)_第3頁
構(gòu)造函數(shù)與析構(gòu)函數(shù)_第4頁
構(gòu)造函數(shù)與析構(gòu)函數(shù)_第5頁
資源描述:

《構(gòu)造函數(shù)與析構(gòu)函數(shù)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、銀舟計算機協(xié)會技術(shù)部學習資料構(gòu)造函數(shù)與析構(gòu)函數(shù)構(gòu)造函數(shù)和析構(gòu)函數(shù)是面向?qū)ο蟪绦蛟O(shè)計中的一個非常重要的概念,但其實它們也并不是很復(fù)雜,要想學習它們,我們就需要了解它們是什么?!緦ο蟮纳芷凇吭谶@里我們今天先暫時不討論有關(guān)于構(gòu)造函數(shù)和析構(gòu)函數(shù)的相關(guān)概念,我們先來認識一下對象的生命周期。眾所周知程序中所有的數(shù)據(jù),無論是變量、常量都是有生命周期限制的,通常我們使用的最多的就是在主函數(shù)中定義某一個變量,從你定義這個變量開始的時候,這個變量也就相當于有了生命,當程序運行完成之后,變量完成了它們的使命,自然就消亡了。這很類似于人類從出生到死亡的過程,但是與人類的生命周期不同的是,數(shù)據(jù)的

2、生命周期都是可以控制的,我們可以通過在程序中使用一對花括號的方式限定某一個變量的生命周期。既然變量有生命周期,那么與變量相似的對象也同樣具有生命周期。那么,對象的生命周期由什么來決定呢?這就是我們今天所要學習的課題?!緲?gòu)造函數(shù)初識】構(gòu)造函數(shù),顧名思義就是用于構(gòu)造對象的函數(shù)。通常,它是和我們的類名重名的,并且由于它的特殊性,它是不需要任何的返回值類型的,也就是我們在定義一個構(gòu)造函數(shù)時,并不需要寫明它的返回類型,請記住是不需要寫,而不是寫成void!在我們使用某一個類,例如Student類定義一個對象std時,實際上Student類調(diào)用了它的構(gòu)造函數(shù)完成了這個讓人覺得很不起眼的

3、功能。也就是說構(gòu)造函數(shù)是在我們新建類的對象的時候自動執(zhí)行的。默認的情況下你并不需要去考慮構(gòu)造函數(shù),如果你不希望它在執(zhí)行的時候額外的為你做些什么的話,你完全可以把它忽略掉。因此我們在上例中并沒有使用構(gòu)造函數(shù)。第21頁共21頁銀舟計算機協(xié)會技術(shù)部學習資料在剛剛的描述中我們已經(jīng)知道了構(gòu)造函數(shù)是用于在我們定義對象的時候為我們在內(nèi)存中生成這個對象的,但其實,構(gòu)造函數(shù)對于我們來說還有另外一種妙用。那就是對私有的成員變量進行賦值!通常的情況下在我們定義類時,C++的編譯系統(tǒng)會在不經(jīng)過你同意的情況下給你建立一個默認的隱藏的構(gòu)造函數(shù),由于它并不需要完成什么功能,所以這一類的構(gòu)造函數(shù)是不需要任

4、何參數(shù)的,沒有任何參數(shù)的構(gòu)造函數(shù)我們就稱之為無參數(shù)的構(gòu)造函數(shù),簡稱“無參構(gòu)造函數(shù)”。那么有無參構(gòu)造函數(shù)自然就會有“有參構(gòu)造函數(shù)”,它的作用其實不用我說明了,這就是構(gòu)造函數(shù)的妙用所在,它可以在我們建立對象的時候為我們賦值!說了那么多貌似我們還沒有真正見過構(gòu)造函數(shù)的樣子,那么我們將繼續(xù)以Student類為案例說明這個構(gòu)造函數(shù):大家一定很奇怪吧!為什么我在這里只是對構(gòu)造函數(shù)進行了函數(shù)聲明,但是卻沒有實現(xiàn)構(gòu)造函數(shù)中的具體功能呢?這就是我的目的,接下來我要教大家如何在類外進行函數(shù)的定義,實現(xiàn)函數(shù)的內(nèi)部功能。在類外實現(xiàn)某個類的函數(shù),無論它是不是構(gòu)造函數(shù)還是析構(gòu)函數(shù),只要它是個函數(shù),它就

5、要遵守以下的規(guī)范,前提是你必須是在類外定義它。它的規(guī)范如下:函數(shù)的返回類型函數(shù)所在的類名::函數(shù)名(函數(shù)參數(shù)1,函數(shù)參數(shù)2,……,函數(shù)參數(shù)n){函數(shù)體中的具體代碼}在這里我需要說明這樣的前提,函數(shù)的返回類型就是你在類中定義的那個函數(shù)的返回值類型,如果是構(gòu)造函數(shù)或者是析構(gòu)函數(shù)的話,你必須將這個選項給忽略。例如我們在類外實現(xiàn)Student類的構(gòu)造函數(shù)時,就需要按照如下的寫法:第21頁共21頁銀舟計算機協(xié)會技術(shù)部學習資料其實大家可以看到,這是完全遵照格式的寫法,因為構(gòu)造函數(shù)和類的名稱本就相同,所以才會出現(xiàn)兩個名稱都是Student的情況,細細想來這樣的安排也并沒有什么不妥。和上面

6、類中代碼一比較我們也可以清楚的發(fā)現(xiàn),類名和“::”(我們稱之為域運算符)后面的內(nèi)容就是構(gòu)造函數(shù)的函數(shù)聲明而已。但是我們也可以發(fā)現(xiàn)一些不同,是的!構(gòu)造函數(shù)并沒有任何返回值,它不需要,也不能要!所以它并不需要像常規(guī)的函數(shù)一樣,在前面加上void作為無返回值的說明,直接而了當!也許這個例子并不能夠帶給大家多么深刻的體會,那么現(xiàn)在我們可以改造一下這個案例,在Student類中添加一個用于實現(xiàn)打印功能的print函數(shù),那么這個時候Student類就會變成下面的樣子:現(xiàn)在大家可以清楚的看到,在Student類中多了一行print函數(shù)的聲明。接下來,我們就要開始在類外對這個函數(shù)進行實現(xiàn)了

7、,它的代碼如下:第21頁共21頁銀舟計算機協(xié)會技術(shù)部學習資料這個時候我們再和前面的構(gòu)造函數(shù)的實現(xiàn)相比,我們可以看到前面多了一個void聲明,那是因為我們在聲明print函數(shù)的時候已經(jīng)把這個函數(shù)聲明成了void類型的。里面具體實現(xiàn)它功能的代碼我想大家就不用再看了。那么這樣我們可以對有參構(gòu)造函數(shù)和無參構(gòu)造函數(shù)進行功能上的總結(jié):當我們需要為類中的數(shù)據(jù)成員設(shè)定默認值時,我們可以定義無參構(gòu)造函數(shù),當我們需要對類中的數(shù)據(jù)成員進行賦值時,那么我們可以使用有參構(gòu)造函數(shù)。那么如何在定義對象的時候使用有參構(gòu)造函數(shù)或者是無參構(gòu)造函數(shù)呢?

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。