![第九章構(gòu)造函數(shù)和析構(gòu)函數(shù)_第1頁](http://file4.renrendoc.com/view/28f8b0bea90dec28865b2151c0701a27/28f8b0bea90dec28865b2151c0701a271.gif)
![第九章構(gòu)造函數(shù)和析構(gòu)函數(shù)_第2頁](http://file4.renrendoc.com/view/28f8b0bea90dec28865b2151c0701a27/28f8b0bea90dec28865b2151c0701a272.gif)
![第九章構(gòu)造函數(shù)和析構(gòu)函數(shù)_第3頁](http://file4.renrendoc.com/view/28f8b0bea90dec28865b2151c0701a27/28f8b0bea90dec28865b2151c0701a273.gif)
![第九章構(gòu)造函數(shù)和析構(gòu)函數(shù)_第4頁](http://file4.renrendoc.com/view/28f8b0bea90dec28865b2151c0701a27/28f8b0bea90dec28865b2151c0701a274.gif)
![第九章構(gòu)造函數(shù)和析構(gòu)函數(shù)_第5頁](http://file4.renrendoc.com/view/28f8b0bea90dec28865b2151c0701a27/28f8b0bea90dec28865b2151c0701a275.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第九章 構(gòu)造函數(shù)和析構(gòu)函數(shù)9 1 構(gòu)造函數(shù)作用:定義創(chuàng)建對象方法,并可以簡單地給對象賦初值。9 1 1 如何定義構(gòu)造函數(shù)1 構(gòu)造函數(shù)作為類中的函數(shù)出現(xiàn)。2 構(gòu)造函數(shù)的名字就是類名。3 可以在函數(shù)定義中初始化對象。例:方法一:在類中定義構(gòu)造函數(shù)格式:( 參數(shù))方法二:在類外定義構(gòu)造函數(shù) : : ( 參數(shù) )例:定義構(gòu)造函數(shù)/ex91.h#include “string.h ” class person private :char Name8;ansigned Age : 7;unsigned Sex : 1;public :person(char *name, int age , char se
2、x) strcopy(Name,name);Age=age;Sex=(sex=?m? 0 : 1 );person() ;/ 函數(shù)重載void Setname(char *name) strcopy(Name,name);void Setage(int age) Age=age;void Setsex(char sex) Sex=(sex= ?m? 0 : 1 ); void Getname(char *name) (strcpy(name, Name); ) int Getage() retuen Age;char Getset() return (Sex=0? ,m?,?f?);又例:#u
3、nclude “iosteam”class timepublic:time( )hour=0;minute=0;sec=0;void set_time( );void show_time( );private:int hour;int minute;int sec;void time:set_time( )cinhour;cinminute;cinsec;void time:show_time( )couthour ”;” minute ”:” secendl;msin()time t1;t1.set_time( );t1.show_time( );time t2;t2.set_time( )
4、;t2.show_time( );return 0;程序執(zhí)行過程:定義對象 t1, 同時(shí)自動(dòng)執(zhí)行構(gòu)造函數(shù),對類中的成員賦初值執(zhí)行t1.set_time( ) 函數(shù),從鍵盤上給t1對象成員賦值執(zhí)行t1.show_time( ) 函數(shù),輸出t1 對象數(shù)據(jù)成員值定義對象 t2, 同時(shí)自動(dòng)執(zhí)行構(gòu)造函數(shù),對類中的成員賦初值執(zhí)行t2.set_time( ) 函數(shù),從鍵盤上給t2對象成員賦值執(zhí)行t2.show_time( ) 函數(shù),輸出t2 對象數(shù)據(jù)成員值問題:如果不給對象成員賦值( 2 步不執(zhí)行) ,輸出結(jié)果是什么?如果沒有構(gòu)造函數(shù),不給對象成員賦值,輸出結(jié)果又是什么?構(gòu)造函數(shù)如何定義?(類內(nèi)和類外)/在
5、類外定義time:time()hour=0;minute=0;sec=0;構(gòu)造函數(shù)如何使用?構(gòu)造函數(shù)的名字是什么?什么時(shí)間調(diào)用構(gòu)造函數(shù)?構(gòu)造函數(shù)有沒有返回值?用戶不定義構(gòu)造函數(shù), C+ 系統(tǒng)會(huì)自動(dòng)生成一個(gè)構(gòu)造函數(shù),該函數(shù)是否有內(nèi)容?帶參數(shù)的構(gòu)造函數(shù)和不帶參數(shù)的構(gòu)造函數(shù)使用上有什么不同?函數(shù)重載和構(gòu)造函數(shù)重載的各自作用和不同地方是什么?11構(gòu)造函數(shù)中的初始值是否一定為 0 ?12為什么要定義重載構(gòu)造函數(shù)?(定義構(gòu)造函數(shù)之后,不允許使用系統(tǒng)默認(rèn)構(gòu)造函數(shù),若要使用必須從新顯示說明)9 1 2 構(gòu)造函數(shù)與對象初始化格式: 對象(實(shí)參) ; 或 對象;例 9-2:利用構(gòu)造函數(shù)對對象初始化且輸出/ex92
6、.h#include “iostream.h”class Demoint x,y;public:Demo(int a,int b)/建立構(gòu)造函數(shù)x=a;y=b;Demo()/ 構(gòu)造函數(shù)重載 x=10;y=20;void print ()cout ”x= ” xendl ”y= ” yprint ();Demo *p2=new Demo();p2-print ();delete p1;/ 釋放或撤消動(dòng)態(tài)對象delete p2;說明:定義動(dòng)態(tài)對象可以使用另一種方法:demo *p1;p1=new demo( )或者:p1=new demo(3,5 )釋放對象使用 delete9 1 4 使用默認(rèn)(
7、缺省)參數(shù)的構(gòu)造函數(shù)1 使用默認(rèn)(缺省)參數(shù)的構(gòu)造函數(shù)的好處2默認(rèn)(缺省)參數(shù)的構(gòu)造函數(shù)的定義方法方法一:#unclude “iosteam”class timepublic:time( ) ;/顯式聲明一個(gè)無參(默認(rèn))的構(gòu)造函數(shù)time(int h,int m,int s) : hour(h), minute(m),sec(s); /聲明一個(gè)有參的構(gòu)造函數(shù)且初始化void set_time( );void show_time( );private:int hour;int minute;int sec;hour=8;int minute=0;int sec=0;void time:set_t
8、ime( )cinhour;cinminute;cinsec;void time:show_time( )couthour ”;” minute ”:” sechour;cinminute;cinsec;void time:show_time( )couthour ”;” minute ”:” secendl;msin()time t1;t1.set_time( );t1.show_time( );time t2;t2.set_time( );t2.show_time( );return 0; 說明:說明對象時(shí),不給參數(shù),就調(diào)用默認(rèn)構(gòu)造函數(shù)用默認(rèn)構(gòu)造函數(shù)定義對象時(shí),要注意定義方法: time
9、tim1; 對象名后不能跟(定義對象時(shí),根據(jù)參數(shù)個(gè)數(shù)調(diào)用不同的構(gòu)造函數(shù)根據(jù)參數(shù)個(gè)數(shù),還可以定義不同參數(shù)個(gè)數(shù)的構(gòu)造函數(shù)(函數(shù)重載) : time(int h,int m) : hour(h), minute(m);time(int h) : hour(h);5一個(gè)類只能有一個(gè)默認(rèn)的構(gòu)造函數(shù)6類中定義了全部視默認(rèn)參數(shù)的構(gòu)造函數(shù)后,不能再定義重載構(gòu)造函數(shù)7 注意 time(int h,int m,int s) : hour(h), minute(m),sec(s);time(int h,int m) : hour(h), minute(m);time(int h) : hour(h);構(gòu)造函數(shù)的聲明
10、和: time(int h=8,int m=0,int s=0) 構(gòu)造函數(shù)的聲明的差別前者參數(shù)個(gè)數(shù)固定,是重載構(gòu)造函數(shù),后者參數(shù)個(gè)數(shù)可變。9.2 析構(gòu)函數(shù)用來撤消一個(gè)對象的。析構(gòu)函數(shù)的定義:在定義類時(shí): 類名(參數(shù))在定義類外時(shí):類名: :類名(參數(shù))例:/ex96.h#include “iostream.h” class Demoint x,y;public Demo(int a,int b)/建立構(gòu)造函數(shù)x=a;y=b;Demo()cout ” hello ” endl;void Print ()cout ”x= ” x ”/析構(gòu)函數(shù)” y= ” yendl;/ex96.cpp#inclu
11、de “ex96.h”Demo d (10,20);Void main() void fun();Demo d1(3,5);d1.print();Fun(); d.print() /撤消dvoid fun() Demo d22=Demo(1,2),Demo(3,4);/對象數(shù)組for(int i=0;i3;i+) d2iprint();/撤消d2輸出結(jié)果:d/ 定義對象d1d2d2/ 撤消對象d1dx=3y=5x=1y=2x=3y=4x=10y=20說明: 析構(gòu)函數(shù)不僅釋放對象,還可以執(zhí)行程序體。 釋放對象的次序是:先構(gòu)造的后析構(gòu)(先用的后釋放) 。 3 對象的賦值和復(fù)制 3 1 對象的賦值#unclude “iosteam”class time public:time(int h=8,int m=0,int s=0) ; void set_time( );void show_ti
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023八年級數(shù)學(xué)上冊 第2章 三角形2.5 全等三角形第5課時(shí) SSS說課稿 (新版)湘教版
- 2024年九年級語文上冊 第五單元 第17課《草房子》說課稿 鄂教版
- 25《慢性子裁縫和急性子顧客》(說課稿)-2023-2024學(xué)年統(tǒng)編版語文三年級下冊
- 2024-2025學(xué)年高中物理 第一章 電磁感應(yīng) 4 楞次定律說課稿 教科版選修3-2
- 2025深圳市途安汽車租賃有限公司租賃合同
- 2025地區(qū)代理合同樣式詳細(xì)版
- 2024年四年級英語下冊 Unit 5 What will you do this weekend Lesson 27說課稿 人教精通版(三起)
- 2023八年級生物下冊 第七單元 生物圈中生命的延續(xù)和發(fā)展第一章 生物的生殖和發(fā)育第2節(jié) 昆蟲的生殖和發(fā)育說課稿 (新版)新人教版
- 個(gè)人消防安裝合同范例
- 俄羅斯電梯采購合同范例
- 部編版語文五年級下冊 全冊教材分析
- 胎兒性別鑒定報(bào)告模板
- 大學(xué)生就業(yè)指導(dǎo)PPT(第2版)全套完整教學(xué)課件
- 家具安裝工培訓(xùn)教案優(yōu)質(zhì)資料
- 湖南大一型抽水蓄能電站施工及質(zhì)量創(chuàng)優(yōu)匯報(bào)
- 耳穴療法治療失眠
- 少兒財(cái)商教育少兒篇
- GB 1886.114-2015食品安全國家標(biāo)準(zhǔn)食品添加劑紫膠(又名蟲膠)
- 初二上冊期末數(shù)學(xué)試卷含答案
- envi二次開發(fā)素材包-idl培訓(xùn)
- 2022年上海市初中語文課程終結(jié)性評價(jià)指南
評論
0/150
提交評論