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