




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
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, 同時自動執(zhí)行構(gòu)造函數(shù),對類中的成員賦初值執(zhí)行t1.set_time( ) 函數(shù),從鍵盤上給t1對象成員賦值執(zhí)行t1.show_time( ) 函數(shù),輸出t1 對象數(shù)據(jù)成員值定義對象 t2, 同時自動執(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ù)的名字是什么?什么時間調(diào)用構(gòu)造函數(shù)?構(gòu)造函數(shù)有沒有返回值?用戶不定義構(gòu)造函數(shù), C+ 系統(tǒng)會自動生成一個構(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)默認構(gòu)造函數(shù),若要使用必須從新顯示說明)9 1 2 構(gòu)造函數(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;/ 釋放或撤消動態(tài)對象delete p2;說明:定義動態(tài)對象可以使用另一種方法:demo *p1;p1=new demo( )或者:p1=new demo(3,5 )釋放對象使用 delete9 1 4 使用默認(
7、缺省)參數(shù)的構(gòu)造函數(shù)1 使用默認(缺省)參數(shù)的構(gòu)造函數(shù)的好處2默認(缺省)參數(shù)的構(gòu)造函數(shù)的定義方法方法一:#unclude “iosteam”class timepublic:time( ) ;/顯式聲明一個無參(默認)的構(gòu)造函數(shù)time(int h,int m,int s) : hour(h), minute(m),sec(s); /聲明一個有參的構(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ù),就調(diào)用默認構(gòu)造函數(shù)用默認構(gòu)造函數(shù)定義對象時,要注意定義方法: time
9、tim1; 對象名后不能跟(定義對象時,根據(jù)參數(shù)個數(shù)調(diào)用不同的構(gòu)造函數(shù)根據(jù)參數(shù)個數(shù),還可以定義不同參數(shù)個數(shù)的構(gòu)造函數(shù)(函數(shù)重載) : time(int h,int m) : hour(h), minute(m);time(int h) : hour(h);5一個類只能有一個默認的構(gòu)造函數(shù)6類中定義了全部視默認參數(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ù)個數(shù)固定,是重載構(gòu)造函數(shù),后者參數(shù)個數(shù)可變。9.2 析構(gòu)函數(shù)用來撤消一個對象的。析構(gòu)函數(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 對象的賦值和復制 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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 資金補助合同范本
- Unit 1 Past and Present Welcome to the Unit 教學設計 2024-2025學年牛津譯林版八年級英語下冊
- 江西2025年江西信息應用職業(yè)技術學院招聘13人筆試歷年參考題庫附帶答案詳解
- 2025年度二零二五社區(qū)食堂租賃合作協(xié)議
- 17難忘的潑水節(jié)教學設計2024-2025學年統(tǒng)編版語文二年級上冊
- 三位數(shù)除以一位數(shù)(商是三位數(shù))(教學設計)-2023-2024學年三年級下冊數(shù)學人教版
- Unit 6 A Greener Earth Reading Actively 教學設計-2024-2025學年高中英語重大版(2019)必修第二冊
- 人教版《歷史與社會》八年級上冊(新)同步教學設計:第3單元第1課《秦始皇開創(chuàng)大一統(tǒng)基業(yè)》
- GBT2406-塑料燃燒性能試驗方法氧指數(shù)法
- 合成生物制劑研發(fā)合同
- 如何在本機上架設服務器
- 一年級寫字下學期課件(PPT 38頁)
- 《實用日本語應用文寫作》全套電子課件完整版ppt整本書電子教案最全教學教程整套課件
- 怎樣處理課堂突發(fā)事件
- 采礦學課程設計-隆德煤礦1.8Mta新井開拓設計
- 中藥藥劑學講義(英語).doc
- 【課件】Unit1ReadingforWriting課件高中英語人教版(2019)必修第二冊
- Q∕GDW 10799.6-2018 國家電網(wǎng)有限公司電力安全工作規(guī)程 第6部分:光伏電站部分
- 滴灌工程設計示例
- 配套模塊an9238用戶手冊rev
- 醫(yī)院室外管網(wǎng)景觀綠化施工組織設計
評論
0/150
提交評論