




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、構(gòu)造函數(shù)與析構(gòu)函數(shù)構(gòu)造函數(shù)與析構(gòu)函數(shù)的作用z它們是特殊的成員函數(shù)z構(gòu)造函數(shù)用于創(chuàng)建對象,初始化對象的成員:y為對象分配空間;對數(shù)據(jù)成員賦初值;請求其他資源z析構(gòu)函數(shù)用于撤銷對象構(gòu)造函數(shù)z構(gòu)造函數(shù)是一個類的特殊成員函數(shù),它的函數(shù)名與類名相同,它可以有任意類型的參數(shù),但 不能具有返回類型。當創(chuàng)建一個對象時,系統(tǒng)自動調(diào)用構(gòu)造函數(shù)(它不能顯示調(diào)用)。構(gòu)造函數(shù)可缺省,也可以由用戶定義。它的作用為:z(1)分配對象的數(shù)據(jù)成員的存儲空間;z(2)執(zhí)行構(gòu)造函數(shù),一般就是作初始化工作。構(gòu)造函數(shù)的聲明和定義z若類中不存在用戶定義的構(gòu)造函數(shù),C+產(chǎn)生缺省構(gòu)造函數(shù)。當建立一個對象時,C+自動調(diào) 用這個缺省的構(gòu)造函數(shù)。
2、類 X 的缺省構(gòu)造函數(shù)不帶任何參數(shù),也不做具體的初始化工作; 具有如下形式:X X( ) 定義構(gòu)造函數(shù)要注意的問題z1 構(gòu)造函數(shù)的名字必須與類名相同z2 構(gòu)造函數(shù)沒有返回值,在聲明和定義構(gòu)造函數(shù)時是不能說明它的類型的z3 構(gòu)造函數(shù)的功能是對對象進行初始化,因此在構(gòu)造函數(shù)中只能對數(shù)據(jù)成員做初始化,這些數(shù)據(jù)成員一般均為私有成員,在構(gòu)造函數(shù)中一般不做賦初值以外的事情重載構(gòu)造函數(shù)z與一般成員函數(shù)一樣,C+允許重載構(gòu)造函數(shù)。若類X具有一個或多個構(gòu)造函數(shù),創(chuàng)建類X的 對象時,C+ 就會根據(jù)參數(shù)表的不同而調(diào)用其中的一個。 構(gòu)造函數(shù)可具有缺省參數(shù)z像所有函數(shù)一樣,構(gòu)造函數(shù)可具有缺省參數(shù)。z允許構(gòu)造函數(shù)帶缺省參
3、數(shù)常用來把對象數(shù)組進行初始化。z在使用具有缺省參數(shù)的構(gòu)造函數(shù)時,要謹防二義性。拷貝構(gòu)造函數(shù)z構(gòu)造函數(shù)的參數(shù)可以是任何類型參數(shù),甚至可以將自己的類的引用作為參數(shù),稱它為拷貝構(gòu) 造函數(shù)。形如: XX(const X & obj);z拷貝構(gòu)造函數(shù)有兩個含義,首先,它是一個構(gòu)造函數(shù),當創(chuàng)建一個新對象時,系統(tǒng)自動調(diào)用 它;其次,它將參數(shù)代表的對象逐域拷貝到新創(chuàng)建的對象中。C+可以為類產(chǎn)生一個缺省的 拷貝構(gòu)造函數(shù),用戶也可以根據(jù)自己的需要定義拷貝構(gòu)造函數(shù)。z類對象的拷貝還可能發(fā)生在函數(shù)參數(shù)傳遞對象和函數(shù)返回對象的情況下。 對象的初始化初始化有許多表示法,C語言有三種表示方法:z(1)初始值表的方法
4、這種方法對結(jié)構(gòu)和數(shù)組的初始化很適合。z(2)賦值表達式的方法適于簡單變量或指針類型的初始化。z(3)表達式表的方法 析構(gòu)函數(shù)z與構(gòu)造函數(shù)對應的是析構(gòu)函數(shù)。析構(gòu)函數(shù)沒有返回類型,沒有參數(shù),函數(shù)名是類名前加“”,它的作用為:z(1)執(zhí)行析構(gòu)函數(shù)體(一般沒有具體的工作);z(2)釋放對象的存儲空間。z可以使用完全限定名方式顯式地調(diào)用析構(gòu)函數(shù);若沒有,則在一個對象的作用域結(jié)束時,系 統(tǒng)自動調(diào)用析構(gòu)函數(shù)。析構(gòu)函數(shù)z析構(gòu)函數(shù)的聲明和定義: y類名();定義析構(gòu)函數(shù)要注意的問題z析構(gòu)函數(shù)也是特殊的類成員函數(shù),它沒有返回類型,沒有參數(shù),不能隨意調(diào)用,也沒有重載。只是在類對象生命期結(jié)束的時候,由系統(tǒng)自動調(diào)用。
5、構(gòu)造函數(shù)與析構(gòu)函數(shù)的特點z 1 它們都沒有返回值說明,也就是說定義構(gòu)造函數(shù)和析構(gòu)函數(shù)時不需指出類型z 2 它們不能被繼承z 3 和大多數(shù)c+函數(shù)一樣,構(gòu)造函數(shù)可以有缺省參數(shù)z 4 析構(gòu)函數(shù)可以是虛的(virtual),但構(gòu)造函數(shù)不行z 5 不可取它們的地址z 6 不能用常規(guī)調(diào)用方法調(diào)用構(gòu)造函數(shù);當使用完全的限定名(帶對象名,類名和函數(shù)名)時可以調(diào)用析構(gòu)函數(shù)z 7 當定義對象時,編譯程序自動調(diào)用構(gòu)造函數(shù);當刪除對象時,編譯程序自動地調(diào)用析構(gòu)函數(shù)。構(gòu)造函數(shù)的種類z無參數(shù)的構(gòu)造函數(shù)z帶參數(shù)的構(gòu)造函數(shù)z缺省參數(shù)的構(gòu)造函數(shù)z默認構(gòu)造函數(shù)z重載構(gòu)造函數(shù)z拷貝構(gòu)造函數(shù)(引用)帶參數(shù)的構(gòu)造函數(shù)z建立對象是,常
6、常需要通過傳遞一定的數(shù)據(jù),來對類中的各種數(shù)據(jù)成員初始化,使得初始化不再一成不變。 缺省參數(shù)的構(gòu)造函數(shù)z有些構(gòu)造函數(shù)的使用中,只有特別的情況需要傳遞參數(shù),一般都使用缺省值 缺省參數(shù)的構(gòu)造函數(shù)定義格式z在構(gòu)造函數(shù)聲明時,給出各個參數(shù)的缺省值z在構(gòu)造函數(shù)定義時,不用也不能給參數(shù)服缺省值缺省參數(shù)的構(gòu)造函數(shù)注意事項z如果函數(shù)所帶的參數(shù)中,有一部分可以缺省,而有一部分不可缺省,所有取缺省值的參數(shù)必須出現(xiàn)在不取缺省值的參數(shù)的右邊z缺省參數(shù)并不只用于構(gòu)造函數(shù),一般的成員函數(shù),甚至于一般的全局函數(shù)都可以使用缺省參數(shù)默認構(gòu)造函數(shù)z 1. c+規(guī)定,每個類必須有一個構(gòu)造函數(shù),沒有構(gòu)造函數(shù),就不能創(chuàng)建任何對象z 2.
7、 若未提供一個類的構(gòu)造函數(shù)(一個都未提供),則c+提供一個默認的構(gòu)造函數(shù),該默認構(gòu)造函數(shù)是個無參構(gòu)造函數(shù),它僅負責創(chuàng)建對象,而不做任何初始化工作z 3. 只要一個類定義了一個構(gòu)造函數(shù)(不一定是無參構(gòu)造函數(shù)),c+就不再提供默認的默認構(gòu)造函數(shù)。也就是說,如果為類定義了一個帶參數(shù)的構(gòu)造函數(shù),還想要無參構(gòu)造函數(shù),則必須自己定義z 4. 與變量定義類似,在用默認構(gòu)造函數(shù)創(chuàng)建對象時,如果創(chuàng)建的是全局對象或靜態(tài)對象,則對象的位模式全為0,否則,對象值是隨機的重載構(gòu)造函數(shù)z構(gòu)造函數(shù)可以被重載,C+根據(jù)聲明中的參數(shù)選擇合適的構(gòu)造函數(shù)拷貝構(gòu)造函數(shù)z首先,它是一個構(gòu)造函數(shù),當創(chuàng)建一個新對象時系統(tǒng)自動調(diào)用它z其次,它的特殊功能是將參數(shù)代表的對象逐域拷貝到新創(chuàng)建的對象中yTdate a(4,2,2003);yTdate b=a; / 或者 Tdate b(a);拷貝構(gòu)造函數(shù)的定義z拷貝構(gòu)造函數(shù)的定義有兩種形式:z1 系統(tǒng)產(chǎn)生 y系統(tǒng)為類產(chǎn)生一個缺省的拷貝構(gòu)造函數(shù)z2 用戶定義y在類定義中定義一個拷貝構(gòu)造函數(shù)yx(const x &) 其中x為類名構(gòu)造類成員z類對象作
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 深圳市育才中學2025屆高三實驗班暑期第一次月考英語試題含解析
- 山東省淄博沂源縣聯(lián)考2025屆初三第一次適應性考試(一模)物理試題含解析
- 江蘇省南菁高中學2024-2025學年初三下學期期末學業(yè)質(zhì)量監(jiān)測語文試題理試題含解析
- 遼寧省丹東市五校協(xié)作體2025屆高三12月考-英語試題(含答案)
- 陜西省榆林市名校2024-2025學年中考模擬(8)語文試題含解析
- 西藏自治區(qū)日喀則市南木林縣2025年初三下期中考試英語試題理試題含答案
- 租賃合同大揭秘
- 機電設(shè)備交易合同樣本2025
- 與建筑公司簽訂的合同賠償協(xié)議
- 版中小學輔導機構(gòu)合同協(xié)議
- (二模)2025年深圳市高三年級第二次調(diào)研考試歷史試卷(含標準答案)
- 婦產(chǎn)科課件-早產(chǎn)臨床防治指南(2024)解讀
- 2024年無錫市錫山環(huán)保能源集團招聘筆試參考題庫附帶答案詳解
- 腦干聽覺誘發(fā)電位課件
- 輸液泵/微量注射泵使用技術(shù)操作考核評分標準
- 附件1數(shù)據(jù)業(yè)務(wù)品質(zhì)管理指標體系
- 康佳led彩電電路原理圖
- 中考英語任務(wù)型閱讀解題技巧課件
- (西北)火力發(fā)電廠汽水管道支吊架設(shè)計手冊
- 文體學eecummings詩歌分析
- 針織毛衫實例
評論
0/150
提交評論