資源描述:
《005構(gòu)造函數(shù)與析構(gòu)函數(shù)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、構(gòu)造函數(shù)與析構(gòu)函數(shù)一、構(gòu)造函數(shù)1.構(gòu)造函數(shù):特殊的類(lèi)成員函數(shù),主要用于為對(duì)象分配空間,進(jìn)行初始化。特點(diǎn):(1)必須與類(lèi)同名。(2)不能指定返回類(lèi)型。(3)可以寫(xiě)在函數(shù)體內(nèi)或外。(4)可以重載。(5)即使構(gòu)造函數(shù)是公有的,也不能被顯式地調(diào)用,它是定義對(duì)象時(shí)被自動(dòng)調(diào)用的。(6)構(gòu)造函數(shù)也可以是不帶參數(shù)的。2.構(gòu)造函數(shù)的聲明格式:函數(shù)名(參數(shù)表);——函數(shù)名必須與類(lèi)同名。帶缺省值的構(gòu)造函數(shù):函數(shù)名(類(lèi)型參數(shù)=默認(rèn)值,類(lèi)型參數(shù)=默認(rèn)值);構(gòu)造函數(shù)的實(shí)現(xiàn):類(lèi)名::函數(shù)名(參數(shù)表){語(yǔ)句序列;}3.用構(gòu)造函數(shù)直接創(chuàng)建對(duì)象格式:類(lèi)名對(duì)象名(實(shí)參表);——聲明構(gòu)造函數(shù)時(shí),參數(shù)沒(méi)有缺省值,則定義對(duì)象時(shí)必須給
2、出實(shí)參。4.構(gòu)造函數(shù)與指針、new結(jié)合創(chuàng)建對(duì)象格式:類(lèi)名*指針變量=new類(lèi)名(實(shí)參表);5.缺省的構(gòu)造函數(shù)如果定義類(lèi)時(shí)沒(méi)有定義構(gòu)造函數(shù),則系統(tǒng)自動(dòng)生成一個(gè)缺省的構(gòu)造函數(shù):格式:類(lèi)名::缺省構(gòu)造函數(shù)名(){}功能:為對(duì)象開(kāi)辟一個(gè)存儲(chǔ)空間,但不初始化。由于用戶一旦定義了構(gòu)造函數(shù),系統(tǒng)將不再提供缺省構(gòu)造函數(shù),因此,可以定義一個(gè)無(wú)參的構(gòu)造函數(shù)以提高程序的健壯性:一個(gè)有錯(cuò)的程序:#include"iostream.h"classDate{public:Date(inty,intm,intd);//Date(){}或增加缺省值voidsetDate(inty,intm,intd);voidshowD
3、ate();private:intyear,month,day;};Date::Date(inty,intm,intd){year=y;month=m;day=d;}voidDate::setDate(inty,intm,intd){year=y;month=m;day=d;}voidDate::showDate(){cout<4、構(gòu)造函數(shù)與初始化函數(shù)二、析構(gòu)函數(shù)1.析構(gòu)函數(shù)一種特殊的類(lèi)成員函數(shù),它執(zhí)行與構(gòu)造函數(shù)相反的操作,用于撤消對(duì)象時(shí)的一些清理任務(wù),釋放分配給對(duì)象的內(nèi)存空間。特點(diǎn):(1)沒(méi)有參數(shù),沒(méi)有返回值,不能重載,一個(gè)類(lèi)中只能有一個(gè)析構(gòu)函數(shù)。(2)撤消對(duì)象時(shí),系統(tǒng)自動(dòng)調(diào)用析構(gòu)函數(shù)。2.析構(gòu)函數(shù)的聲明格式:~函數(shù)名()——函數(shù)名與類(lèi)同名。三、拷貝構(gòu)造函數(shù)用已經(jīng)存在的對(duì)象建立新對(duì)象或函數(shù)調(diào)用時(shí)函數(shù)參數(shù)為對(duì)象且是值傳遞類(lèi)型時(shí),需要調(diào)用的函數(shù)。當(dāng)類(lèi)中沒(méi)有顯示聲明拷貝構(gòu)造函數(shù),系統(tǒng)會(huì)提供默認(rèn)的拷貝構(gòu)造函數(shù)。#include"iostream.h"classstu{private:char*name;public:stu
5、(){cout<<"調(diào)用了無(wú)參構(gòu)造函數(shù)"<6、ut<<"析構(gòu)了"<7、構(gòu)造函數(shù)必須定義,不能缺省2.在聲明類(lèi)時(shí),下面的說(shuō)法正確的是:A.可以在類(lèi)的聲明中給數(shù)據(jù)成員賦初值B.數(shù)據(jù)成員的數(shù)據(jù)類(lèi)型可以是registerC.prvate,public,protected可以按任意順序出現(xiàn)D.沒(méi)有用prvate,public,protected定義的數(shù)據(jù)成員是公有成員3.在下面有關(guān)析構(gòu)函數(shù)特征的描述中,正確的是:()A.一個(gè)類(lèi)中可以定義多個(gè)析構(gòu)函數(shù)B.析構(gòu)函數(shù)名與類(lèi)名完全相同C.析構(gòu)函數(shù)不能指定返回