![C++類及設(shè)計(jì),構(gòu)造函數(shù)和析構(gòu)函數(shù)_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/9/65820e93-3d13-46d0-ad53-8bd776348add/65820e93-3d13-46d0-ad53-8bd776348add1.gif)
![C++類及設(shè)計(jì),構(gòu)造函數(shù)和析構(gòu)函數(shù)_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/9/65820e93-3d13-46d0-ad53-8bd776348add/65820e93-3d13-46d0-ad53-8bd776348add2.gif)
![C++類及設(shè)計(jì),構(gòu)造函數(shù)和析構(gòu)函數(shù)_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/9/65820e93-3d13-46d0-ad53-8bd776348add/65820e93-3d13-46d0-ad53-8bd776348add3.gif)
![C++類及設(shè)計(jì),構(gòu)造函數(shù)和析構(gòu)函數(shù)_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/9/65820e93-3d13-46d0-ad53-8bd776348add/65820e93-3d13-46d0-ad53-8bd776348add4.gif)
![C++類及設(shè)計(jì),構(gòu)造函數(shù)和析構(gòu)函數(shù)_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/9/65820e93-3d13-46d0-ad53-8bd776348add/65820e93-3d13-46d0-ad53-8bd776348add5.gif)
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、;.類是編程人員表達(dá)自定義數(shù)據(jù)類型的C+機(jī)制。它和C語(yǔ)言中的結(jié)構(gòu)類似,C+類支持?jǐn)?shù)據(jù)抽象和面向?qū)ο蟮某绦蛟O(shè)計(jì),從某種意義上說(shuō),也就是數(shù)據(jù)類型的設(shè)計(jì)和實(shí)現(xiàn)。一、類的設(shè)計(jì)1.類的聲明class 類名private: /私有.public: /公有.;2.類的成員一般在C+類中,所有定義的變量和函數(shù)都是類的成員。如果是變量,我們就叫它數(shù)據(jù)成員如果是函數(shù),我們就叫它成員函數(shù)。3.類成員的可見性private和public訪問(wèn)控制符決定了成員的可見性。由一個(gè)訪問(wèn)控制符設(shè)定的可訪問(wèn)狀態(tài)將一直持續(xù)到下一個(gè)訪問(wèn)控制符出現(xiàn),或者類聲明的結(jié)束。私有成員僅能被同一個(gè)類中的成員函數(shù)訪問(wèn),公有成員既可以被同一類中的成員
2、函數(shù)訪問(wèn),也可以被其他已經(jīng)實(shí)例化的類中函數(shù)訪問(wèn)。當(dāng)然,這也有例外的情況,這是以后要討論的友元函數(shù)。類中默認(rèn)的數(shù)據(jù)類型是private,結(jié)構(gòu)中的默認(rèn)類型是public。一般情況下,變量都作為私有成員出現(xiàn),函數(shù)都作為公有成員出現(xiàn)。類中還有一種訪問(wèn)控制符protected,叫保護(hù)成員,以后再說(shuō)明。4.初始化在聲明一個(gè)類的對(duì)象時(shí),可以用圓括號(hào)()包含一個(gè)初始化表??聪旅嬉粋€(gè)例子:#include iostream.hclass Boxprivate:int height,width,depth; /3個(gè)私有數(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); /聲明一個(gè)類對(duì)象并初始化cout<<THISBOX.VOLUME()<<ENDL;return 0;當(dāng)一個(gè)類中沒(méi)有private成員和protected成員時(shí),也沒(méi)有虛函數(shù),并且不是從其他類中派生出來(lái)的,可以用來(lái)初始化。(以后再講解)5.內(nèi)聯(lián)函數(shù)內(nèi)聯(lián)函數(shù)和普通函數(shù)的區(qū)別是
4、:內(nèi)聯(lián)函數(shù)是在編譯過(guò)程中展開的。通常內(nèi)聯(lián)函數(shù)必須簡(jiǎn)短。定義類的內(nèi)聯(lián)函數(shù)有兩種方法:一種和C語(yǔ)言一樣,在定義函數(shù)時(shí)使用關(guān)鍵字inline。如:inline int Box:volume()return height*width*depth;還有一種方法就是直接在類聲明的內(nèi)部定義函數(shù)體,而不是僅僅給出一個(gè)函數(shù)原型。我們把上面的函數(shù)簡(jiǎn)化一下:#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); /聲明一個(gè)類對(duì)象并初始化cout<<THISBOX.VOLUME()<<ENDL;return 0;這樣,兩個(gè)函數(shù)都默認(rèn)為內(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è)都沒(méi)有,編譯器將為該類產(chǎn)生一個(gè)默認(rèn)的構(gòu)造函數(shù),這個(gè)構(gòu)造函數(shù)可能會(huì)完成一些工作,也可能什么都不做。絕對(duì)不能指定構(gòu)造函數(shù)的類型,即使是void型都
6、不可以。實(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)造函數(shù)就是被用來(lái)進(jìn)行初始化工作的。當(dāng)自動(dòng)類型的類對(duì)象離開其作用域時(shí),所站用的內(nèi)存將釋放回系統(tǒng)??瓷厦娴睦?,構(gòu)造函數(shù)Box()函數(shù)接受三個(gè)整型擦黑素,并把他們賦值給立方體對(duì)象的數(shù)據(jù)成員。如果構(gòu)造函數(shù)沒(méi)有參數(shù),那么聲明對(duì)象時(shí)也不需要括號(hào)。1.使用默認(rèn)參數(shù)的構(gòu)造函數(shù)當(dāng)在聲明類對(duì)象時(shí),如果沒(méi)有指定參數(shù),則使用默認(rèn)參數(shù)來(lái)初始化對(duì)象。#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; /使用默認(rèn)參數(shù)cout<<THISBOX.VOLUME()<cout<<DEFAULBOX.VOLUME()<return 0;2.默認(rèn)構(gòu)造函數(shù)沒(méi)有參數(shù)或者參數(shù)都是默認(rèn)值的構(gòu)造函數(shù)稱為默認(rèn)構(gòu)造
8、函數(shù)。如果你不提供構(gòu)造函數(shù),編譯器會(huì)自動(dòng)產(chǎn)生一個(gè)公共的默認(rèn)構(gòu)造函數(shù),這個(gè)構(gòu)造函數(shù)什么都不做。如果至少提供一個(gè)構(gòu)造函數(shù),則編譯器就不會(huì)產(chǎn)生默認(rèn)構(gòu)造函數(shù)。3.重載構(gòu)造函數(shù)一個(gè)類中可以有多個(gè)構(gòu)造函數(shù)。這些構(gòu)造函數(shù)必須具有不同的參數(shù)表。在一個(gè)類中需要接受不同初始化值時(shí),就需要編寫多個(gè)構(gòu)造函數(shù),但有時(shí)候只需要一個(gè)不帶初始值的空的Box對(duì)象。#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è)構(gòu)造函數(shù)一個(gè)沒(méi)有初始化值,一個(gè)有。當(dāng)沒(méi)有初始化值時(shí),程序使用默認(rèn)值,即2,3,4。但是這樣的程序是不好的。它允許使用初始化過(guò)的和沒(méi)有初始化過(guò)的Box對(duì)象,但它沒(méi)有考慮當(dāng)thisbox給otherbox賦值失敗后,volume()該返回什么。較好的方法是,沒(méi)有參
10、數(shù)表的構(gòu)造函數(shù)也把默認(rèn)值賦值給對(duì)象。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;這還不是最好的方法,更好的方法是使用默認(rèn)參數(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ù)當(dāng)一個(gè)類的對(duì)象離開作用域時(shí),析構(gòu)函數(shù)將被調(diào)用(系統(tǒng)自動(dòng)調(diào)用)。析構(gòu)函數(shù)的名字和類名一
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人短期借款法律合同范本2025
- 萬(wàn)畝良田聯(lián)產(chǎn)承包合同新政策
- 個(gè)人廠房租賃合同典范
- 產(chǎn)權(quán)清楚車位買賣合同細(xì)則
- 上海市房地產(chǎn)委托代理合同范本
- 食品調(diào)料采購(gòu)合同
- 個(gè)人貸款借款合同模板
- 勞動(dòng)合同管理制度7
- 個(gè)人借款合同書及還款細(xì)則
- 個(gè)人住宅購(gòu)房合同條款及樣本
- 廣東省廣州市黃埔區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期期末生物試卷+
- 北京市豐臺(tái)區(qū)市級(jí)名校2024屆數(shù)學(xué)高一第二學(xué)期期末檢測(cè)模擬試題含解析
- 設(shè)立項(xiàng)目管理公司組建方案
- 薪酬戰(zhàn)略與實(shí)踐
- 答案之書(解答之書)-電子版精選答案
- 中國(guó)古代文學(xué)史 馬工程課件(上)01總緒論
- GB/T 22085.1-2008電子束及激光焊接接頭缺欠質(zhì)量分級(jí)指南第1部分:鋼
- 上海中心大廈-介紹 課件
- 非酒精性脂肪性肝病防治指南解讀課件
- 地理微格教學(xué)課件
- 合成氨操作規(guī)程
評(píng)論
0/150
提交評(píng)論