類及構(gòu)造函數(shù)和析構(gòu)函數(shù)

類及構(gòu)造函數(shù)和析構(gòu)函數(shù)

ID:26413130

大小:70.18 KB

頁數(shù):14頁

時間:2018-11-26

類及構(gòu)造函數(shù)和析構(gòu)函數(shù)_第1頁
類及構(gòu)造函數(shù)和析構(gòu)函數(shù)_第2頁
類及構(gòu)造函數(shù)和析構(gòu)函數(shù)_第3頁
類及構(gòu)造函數(shù)和析構(gòu)函數(shù)_第4頁
類及構(gòu)造函數(shù)和析構(gòu)函數(shù)_第5頁
資源描述:

《類及構(gòu)造函數(shù)和析構(gòu)函數(shù)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫

1、C++面向?qū)ο缶幊倘腴T:構(gòu)造函數(shù)與析構(gòu)函數(shù)  請注意,這一節(jié)內(nèi)容是c++的重點,要特別注意!  我們先說一下什么是構(gòu)造函數(shù)?! ∩弦粋€教程我們簡單說了關(guān)于類的一些基本內(nèi)容,對于類對象成員的初始化我們始終是建立成員函數(shù)然后手工調(diào)用該函數(shù)對成員進行賦值的,那么在c++中對于類來說有沒有更方便的方式能夠在對象創(chuàng)建的時候就自動初始化成員變量呢,這一點對操作保護成員是至關(guān)重要的,答案是肯定的。關(guān)于c++類成員的初始化,有專門的構(gòu)造函數(shù)來進行自動操作而無需要手工調(diào)用,在正式講解之前先看看c++對構(gòu)造函數(shù)的一個基本定義?! ?.C++規(guī)

2、定,每個類必須有默認的構(gòu)造函數(shù),沒有構(gòu)造函數(shù)就不能創(chuàng)建對象?! ?.若沒有提供任何構(gòu)造函數(shù),那么c++提供自動提供一個默認的構(gòu)造函數(shù),該默認構(gòu)造函數(shù)是一個沒有參數(shù)的構(gòu)造函數(shù),它僅僅負責創(chuàng)建對象而不做任何賦值操作?! ?.只要類中提供了任意一個構(gòu)造函數(shù),那么c++就不在自動提供默認構(gòu)造函數(shù)?! ?.類對象的定義和變量的定義類似,使用默認構(gòu)造函數(shù)創(chuàng)建對象的時候,如果創(chuàng)建的是靜態(tài)或者是全局對象,則對象的位模式全部為0,否則將會是隨即的。  我們來看下面的代碼:#includeusingnamespacestd

3、;classStudent{public:Student()//無參數(shù)構(gòu)造函數(shù){number=1;score=100;}voidshow();protected:intnumber;intscore;};voidStudent::show(){cout<

4、如果去掉Student()函數(shù)體內(nèi)的代碼那么它和c++的默認提供的構(gòu)造函數(shù)等價的?! ?gòu)造函數(shù)可以帶任意多個的形式參數(shù),這一點和普通函數(shù)的特性是一樣的!  下面我們來看一個帶參數(shù)的構(gòu)造函數(shù)是如何進行對象的始化操作的?! 〈a如下:#includeusingnamespacestd;classTeacher{public:Teacher(char*input_name)//有參數(shù)的構(gòu)造函數(shù){name=newchar[10];//name=input_name;//這樣賦值是錯誤的strcpy(name,i

5、nput_name);}voidshow();protected:char*name;};voidTeacher::show(){cout<

6、同,因為構(gòu)造函數(shù)是為創(chuàng)建對象而設(shè)立的,這里的意義不單純是調(diào)用函數(shù),而是創(chuàng)建一個類對象?! ∫坏╊愔杏辛艘粋€帶參數(shù)的構(gòu)造函數(shù)而又沒無參數(shù)構(gòu)造函數(shù)的時候系統(tǒng)將無法創(chuàng)建不帶參數(shù)的對象,所以上面的代碼Teachera;  就是錯誤的?。?!  這里還有一處也要注意://name=input_name;//這樣賦值是錯誤的  因為name指是指向內(nèi)存堆區(qū)的,如果使用name=input_name;會造成指針指向改變不是指向堆區(qū)而是指向棧區(qū),導致在后面調(diào)用析構(gòu)函數(shù)delete釋放堆空間出錯!(析構(gòu)函數(shù)的內(nèi)容我們后面將要介紹)  如果需要

7、調(diào)用能夠執(zhí)行就需要再添加一個沒有參數(shù)的構(gòu)造函數(shù)  對上面的代碼改造如下:#includeusingnamespacestd;classTeacher{public:Teacher(char*input_name){name=newchar[10];//name=input_name;//這樣賦值是錯誤的strcpy(name,input_name);}Teacher()//無參數(shù)構(gòu)造函數(shù),進行函數(shù)重載{}voidshow();protected:char*name;};voidTeacher::show

8、(){cout<

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。