資源描述:
《c構(gòu)造函數(shù)與析構(gòu)函數(shù).ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第十章構(gòu)造函數(shù)和析構(gòu)函數(shù)構(gòu)造函數(shù)和析構(gòu)函數(shù)是在類體中說明的兩種特殊的成員函數(shù)。構(gòu)造函數(shù)是在創(chuàng)建對(duì)象時(shí),使用給定的值來將對(duì)象初始化。析構(gòu)函數(shù)的功能正好相反,是在系統(tǒng)釋放對(duì)象前,對(duì)對(duì)象做一些善后工作。構(gòu)造函數(shù)是類的成員函數(shù),系統(tǒng)約定構(gòu)造函數(shù)名必須與類名相同。構(gòu)造函數(shù)提供了初始化對(duì)象的一種簡單的方法。構(gòu)造函數(shù)可以帶參數(shù)、可以重載,同時(shí)沒有返回值。classA{floatx,y;public:A(floata,floatb){x=a;y=b;}//構(gòu)造函數(shù),初始化對(duì)象floatSum(void){returnx+y;}voidSet(floata,floatb){x=a;
2、y=b;}Print(void){cout<<"x="<3、定義多個(gè)構(gòu)造函數(shù)時(shí),必須滿足函數(shù)重載的原則。4.構(gòu)造函數(shù)可以指定參數(shù)的缺省值。5.若定義的類要說明該類的對(duì)象時(shí),構(gòu)造函數(shù)必須是公有的成員函數(shù)。如果定義的類僅用于派生其它類時(shí),則可將構(gòu)造函數(shù)定義為保護(hù)的成員函數(shù)。由于構(gòu)造函數(shù)屬于類的成員函數(shù),它對(duì)私有數(shù)據(jù)成員、保護(hù)的數(shù)據(jù)成員和公有的數(shù)據(jù)成員均能進(jìn)行初始化。classA{floatx,y;public:A(floata,floatb=10){x=a;y=b;}A(){x=0;y=0;}voidPrint(void){cout<4、),a3(3.0,7.0);a1.Print();a2.Print();a3.Print();}00201037帶缺省參數(shù)的構(gòu)造函數(shù)不帶參數(shù)的構(gòu)造函數(shù)每一個(gè)對(duì)象必須要有相應(yīng)的構(gòu)造函數(shù)每一個(gè)對(duì)象必須要有相應(yīng)的構(gòu)造函數(shù)若沒有顯式定義構(gòu)造函數(shù),系統(tǒng)默認(rèn)缺省的構(gòu)造函數(shù)。classA{floatx,y;public:A(){}voidPrint(void){cout<5、于靜態(tài)對(duì)象,是在首次定義對(duì)象時(shí),調(diào)用構(gòu)造函數(shù)的,且由于對(duì)象一直存在,只調(diào)用一次構(gòu)造函數(shù)。對(duì)于全局對(duì)象,是在main函數(shù)執(zhí)行之前調(diào)用構(gòu)造函數(shù)的。classA{intx,y;public:A(inta){x=a;cout<<“1”;}A(inta,intb){x=a,y=b;cout<<“2”;}};Aa1(3);voidf(void){Ab(2,3);}voidmain(void){Aa2(4,5);f();f();}1222classA{floatx,y;public:A(floata,floatb){x=a;y=b;cout<<"初始化自動(dòng)局部對(duì)象"
6、;}A(){x=0;y=0;cout<<"初始化靜態(tài)局部對(duì)象";}A(floata){x=a;y=0;cout<<"初始化全局對(duì)象";}voidPrint(void){cout<7、入f()函數(shù)初始化局部靜態(tài)變量進(jìn)入f()函數(shù)初始化自動(dòng)局部對(duì)象初始化自動(dòng)局部對(duì)象缺省的構(gòu)造函數(shù)在定義類時(shí),若沒有定義類的構(gòu)造函數(shù),則編譯器自動(dòng)產(chǎn)生一個(gè)缺省的構(gòu)造函數(shù),其格式為:className::className(){}缺省的構(gòu)造函數(shù)并不對(duì)所產(chǎn)生對(duì)象的數(shù)據(jù)成員賦初值;即新產(chǎn)生對(duì)象的數(shù)據(jù)成員的值是不確定的。classA{floatx,y;public:A(){}//缺省的構(gòu)造函數(shù),編譯器自動(dòng)產(chǎn)生,可以不寫floatSum(void){returnx+y;}voidSet(floata,floatb){x=a;y=b;}voidPrint(void){cout<<
8、"x="<