資源描述:
《C類的設(shè)計(jì)構(gòu)造函數(shù)和析構(gòu)函數(shù).doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、類是編程人員表達(dá)自定義數(shù)據(jù)類型的C++機(jī)制。它和C語言中的結(jié)構(gòu)類似,C++類支持?jǐn)?shù)據(jù)抽象和面向?qū)ο蟮某绦蛟O(shè)計(jì),從某種意義上說,也就是數(shù)據(jù)類型的設(shè)計(jì)和實(shí)現(xiàn)。?一、類的設(shè)計(jì)?1.類的聲明class類名{privat(yī)e: //私有。。.public: //公有..。?};??2.類的成員?一般在C++類中,所有定義的變量和函數(shù)都是類的成員。如果是變量,我們就叫它數(shù)據(jù)成員如果是函數(shù),我們就叫它成員函數(shù)。?3。類成員的可見性private和public訪問控制符決定了成員的可見性。由一個(gè)訪問控制符設(shè)定的可訪問狀態(tài)將一直持續(xù)到下一個(gè)訪問控制符出現(xiàn),或者類
2、聲明的結(jié)束.私有成員僅能被同一個(gè)類中的成員函數(shù)訪問,公有成員既可以被同一類中的成員函數(shù)訪問,也可以被其他已經(jīng)實(shí)例化的類中函數(shù)訪問。當(dāng)然,這也有例外的情況,這是以后要討論的友元函數(shù)。類中默認(rèn)的數(shù)據(jù)類型是private,結(jié)構(gòu)中的默認(rèn)類型是public.一般情況下,變量都作為私有成員出現(xiàn),函數(shù)都作為公有成員出現(xiàn)。類中還有一種訪問控制符protected,叫保護(hù)成員,以后再說明。4.初始化在聲明一個(gè)類的對(duì)象時(shí),可以用圓括號(hào)()包含一個(gè)初始化表。??看下面一個(gè)例子:#includeiostream.hclassBox{?private:?intheig
3、ht,width,depth;//3個(gè)私有數(shù)據(jù)成員?public:?Box(int,int,int);?~Box();int volume();//成員函數(shù)};?Box::Box(intht,intwd,int dp){height=ht;?width=wd;depth=dp;?}Box::~Box(){?//nothing?}intBox::volume(){?returnheight*width*depth;}?intmain(){?Boxthisbox(3,4,5);//聲明一個(gè)類對(duì)象并初始化?cout<<THISBOX.VOLUME(
4、)<<ENDL;?return0;}?當(dāng)一個(gè)類中沒有private成員和protected成員時(shí),也沒有虛函數(shù),并且不是從其他類中派生出來的,可以用{}來初始化.(以后再講解)5。內(nèi)聯(lián)函數(shù)?內(nèi)聯(lián)函數(shù)和普通函數(shù)的區(qū)別是:內(nèi)聯(lián)函數(shù)是在編譯過程中展開的。通常內(nèi)聯(lián)函數(shù)必須簡(jiǎn)短.定義類的內(nèi)聯(lián)函數(shù)有兩種方法:一種和C語言一樣,在定義函數(shù)時(shí)使用關(guān)鍵字inline。如:inlineintBox::volume(){returnheight*width*depth;?}?還有一種方法就是直接在類聲明的內(nèi)部定義函數(shù)體,而不是僅僅給出一個(gè)函數(shù)原型。我們把上面的函數(shù)
5、簡(jiǎn)化一下:#includeiostream.h??classBox?{?privat(yī)e:intheight,width,depth;?public:Box(intht,intwd,intdp){height=ht;?width=wd;depth=dp;}?~Box();int volume(){?returnheight*width*depth;}?};??intmain(){?Box thisbox(3,4,5); //聲明一個(gè)類對(duì)象并初始化cout〈
6、內(nèi)聯(lián)函數(shù)了。?二、構(gòu)造函數(shù)什么是構(gòu)造函數(shù)?通俗的講,在類中,函數(shù)名和類名相同的函數(shù)稱為構(gòu)造函數(shù).上面的Box()函數(shù)就是構(gòu)造函數(shù)。C++允許同名函數(shù),也就允許在一個(gè)類中有多個(gè)構(gòu)造函數(shù)。如果一個(gè)都沒有,編譯器將為該類產(chǎn)生一個(gè)默認(rèn)的構(gòu)造函數(shù),這個(gè)構(gòu)造函數(shù)可能會(huì)完成一些工作,也可能什么都不做。?絕對(duì)不能指定構(gòu)造函數(shù)的類型,即使是void型都不可以。實(shí)際上構(gòu)造函數(shù)默認(rèn)為void型。?當(dāng)一個(gè)類的對(duì)象進(jìn)入作用域時(shí),系統(tǒng)會(huì)為其數(shù)據(jù)成員分配足夠的內(nèi)存,但是系統(tǒng)不一定將其初始化。和內(nèi)部數(shù)據(jù)類型對(duì)象一樣,外部對(duì)象的數(shù)據(jù)成員總是初始化為0。局部對(duì)象不會(huì)被初始化.構(gòu) 7、造函數(shù)就是被用來進(jìn)行初始化工作的。當(dāng)自動(dòng)類型的類對(duì)象離開其作用域時(shí),所站用的內(nèi)存將釋放回系統(tǒng)。?看上面的例子,構(gòu)造函數(shù)Box()函數(shù)接受三個(gè)整型擦黑素,并把他們賦值給立方體對(duì)象的數(shù)據(jù)成員。如果構(gòu)造函數(shù)沒有參數(shù),那么聲明對(duì)象時(shí)也不需要括號(hào)。1.使用默認(rèn)參數(shù)的構(gòu)造函數(shù)?當(dāng)在聲明類對(duì)象時(shí),如果沒有指定參數(shù),則使用默認(rèn)參數(shù)來初始化對(duì)象。#includeiostream.h??class Box{private:?intheight,width,depth;?public:Box(int ht=2,intwd=3,intdp=4)?{?height=h 8、t;width=wd;?depth=dp;?}~Box();intvolume(){returnheight*width*depth;?}};?int main()
當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。
|