C++類及設(shè)計,構(gòu)造函數(shù)和析構(gòu)函數(shù)_第1頁
C++類及設(shè)計,構(gòu)造函數(shù)和析構(gòu)函數(shù)_第2頁
C++類及設(shè)計,構(gòu)造函數(shù)和析構(gòu)函數(shù)_第3頁
C++類及設(shè)計,構(gòu)造函數(shù)和析構(gòu)函數(shù)_第4頁
C++類及設(shè)計,構(gòu)造函數(shù)和析構(gòu)函數(shù)_第5頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、;.類是編程人員表達自定義數(shù)據(jù)類型的C+機制。它和C語言中的結(jié)構(gòu)類似,C+類支持數(shù)據(jù)抽象和面向?qū)ο蟮某绦蛟O(shè)計,從某種意義上說,也就是數(shù)據(jù)類型的設(shè)計和實現(xiàn)。一、類的設(shè)計1.類的聲明class 類名private: /私有.public: /公有.;2.類的成員一般在C+類中,所有定義的變量和函數(shù)都是類的成員。如果是變量,我們就叫它數(shù)據(jù)成員如果是函數(shù),我們就叫它成員函數(shù)。3.類成員的可見性private和public訪問控制符決定了成員的可見性。由一個訪問控制符設(shè)定的可訪問狀態(tài)將一直持續(xù)到下一個訪問控制符出現(xiàn),或者類聲明的結(jié)束。私有成員僅能被同一個類中的成員函數(shù)訪問,公有成員既可以被同一類中的成員

2、函數(shù)訪問,也可以被其他已經(jīng)實例化的類中函數(shù)訪問。當然,這也有例外的情況,這是以后要討論的友元函數(shù)。類中默認的數(shù)據(jù)類型是private,結(jié)構(gòu)中的默認類型是public。一般情況下,變量都作為私有成員出現(xiàn),函數(shù)都作為公有成員出現(xiàn)。類中還有一種訪問控制符protected,叫保護成員,以后再說明。4.初始化在聲明一個類的對象時,可以用圓括號()包含一個初始化表。看下面一個例子:#include iostream.hclass Boxprivate:int height,width,depth; /3個私有數(shù)據(jù)成員public:Box(int,int,int);Box();int volume();

3、/成員函數(shù);Box:Box(int ht,int wd,int dp)height=ht;width=wd;depth=dp;Box:Box()/nothingint Box:volume()return height*width*depth;int main()Box thisbox(3,4,5); /聲明一個類對象并初始化cout<<THISBOX.VOLUME()<<ENDL;return 0;當一個類中沒有private成員和protected成員時,也沒有虛函數(shù),并且不是從其他類中派生出來的,可以用來初始化。(以后再講解)5.內(nèi)聯(lián)函數(shù)內(nèi)聯(lián)函數(shù)和普通函數(shù)的區(qū)別是

4、:內(nèi)聯(lián)函數(shù)是在編譯過程中展開的。通常內(nèi)聯(lián)函數(shù)必須簡短。定義類的內(nèi)聯(lián)函數(shù)有兩種方法:一種和C語言一樣,在定義函數(shù)時使用關(guān)鍵字inline。如:inline int Box:volume()return height*width*depth;還有一種方法就是直接在類聲明的內(nèi)部定義函數(shù)體,而不是僅僅給出一個函數(shù)原型。我們把上面的函數(shù)簡化一下:#include iostream.hclass Boxprivate:int height,width,depth;public:Box(int ht,int wd,int dp)height=ht;width=wd;depth=dp;Box();int vo

5、lume()return height*width*depth;int main()Box thisbox(3,4,5); /聲明一個類對象并初始化cout<<THISBOX.VOLUME()<<ENDL;return 0;這樣,兩個函數(shù)都默認為內(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型都

6、不可以。實際上構(gòu)造函數(shù)默認為void型。當一個類的對象進入作用域時,系統(tǒng)會為其數(shù)據(jù)成員分配足夠的內(nèi)存,但是系統(tǒng)不一定將其初始化。和內(nèi)部數(shù)據(jù)類型對象一樣,外部對象的數(shù)據(jù)成員總是初始化為0。局部對象不會被初始化。構(gòu)造函數(shù)就是被用來進行初始化工作的。當自動類型的類對象離開其作用域時,所站用的內(nèi)存將釋放回系統(tǒng)??瓷厦娴睦樱瑯?gòu)造函數(shù)Box()函數(shù)接受三個整型擦黑素,并把他們賦值給立方體對象的數(shù)據(jù)成員。如果構(gòu)造函數(shù)沒有參數(shù),那么聲明對象時也不需要括號。1.使用默認參數(shù)的構(gòu)造函數(shù)當在聲明類對象時,如果沒有指定參數(shù),則使用默認參數(shù)來初始化對象。#include iostream.hclass Boxpriv

7、ate:int height,width,depth;public:Box(int ht=2,int wd=3,int dp=4)height=ht;width=wd;depth=dp;Box();int volume()return height*width*depth;int main()Box thisbox(3,4,5); /初始化Box defaulbox; /使用默認參數(shù)cout<<THISBOX.VOLUME()<cout<<DEFAULBOX.VOLUME()<return 0;2.默認構(gòu)造函數(shù)沒有參數(shù)或者參數(shù)都是默認值的構(gòu)造函數(shù)稱為默認構(gòu)造

8、函數(shù)。如果你不提供構(gòu)造函數(shù),編譯器會自動產(chǎn)生一個公共的默認構(gòu)造函數(shù),這個構(gòu)造函數(shù)什么都不做。如果至少提供一個構(gòu)造函數(shù),則編譯器就不會產(chǎn)生默認構(gòu)造函數(shù)。3.重載構(gòu)造函數(shù)一個類中可以有多個構(gòu)造函數(shù)。這些構(gòu)造函數(shù)必須具有不同的參數(shù)表。在一個類中需要接受不同初始化值時,就需要編寫多個構(gòu)造函數(shù),但有時候只需要一個不帶初始值的空的Box對象。#include iostream.hclass Boxprivate:int height,width,depth;public:Box() /nothing Box(int ht=2,int wd=3,int dp=4)height=ht;width=wd;dep

9、th=dp;Box();int volume()return height*width*depth;int main()Box thisbox(3,4,5); /初始化Box otherbox; otherbox=thisbox;cout<<OTHERBOX.VOLUME();<<ENDL;return 0;這兩個構(gòu)造函數(shù)一個沒有初始化值,一個有。當沒有初始化值時,程序使用默認值,即2,3,4。但是這樣的程序是不好的。它允許使用初始化過的和沒有初始化過的Box對象,但它沒有考慮當thisbox給otherbox賦值失敗后,volume()該返回什么。較好的方法是,沒有參

10、數(shù)表的構(gòu)造函數(shù)也把默認值賦值給對象。class Boxint height,width,depth;public:Box()height=0;width=0;depth=0;Box(int ht,int wd,int dp)height=ht;width=wd;depth=dp;int volume()return height*width*depth;這還不是最好的方法,更好的方法是使用默認參數(shù),根本不需要不帶參數(shù)的構(gòu)造函數(shù)。class Boxint height,width,depth;public:Box(int ht=0,int wd=0,int dp=0)height=ht;width=wd;depth=dp;int volume()return height*width*depth;三、析構(gòu)函數(shù)當一個類的對象離開作用域時,析構(gòu)函數(shù)將被調(diào)用(系統(tǒng)自動調(diào)用)。析構(gòu)函數(shù)的名字和類名一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論