版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第第9章章 類和對象類和對象9.19.1類和對象的根本概念類和對象的根本概念 數(shù)據(jù)與函數(shù)原型封裝在一同稱作類,數(shù)據(jù)與函數(shù)原型封裝在一同稱作類,方法是在構(gòu)造類型中添加了函數(shù)原型,被方法是在構(gòu)造類型中添加了函數(shù)原型,被類闡明的變量稱為對象。對象中又包含著類闡明的變量稱為對象。對象中又包含著方法和屬性。方法和屬性。9.2 9.2 類類 包含數(shù)據(jù)又包含函數(shù)方法的數(shù)據(jù)包含數(shù)據(jù)又包含函數(shù)方法的數(shù)據(jù)類型稱為類。類型稱為類。9.2.1 9.2.1 對類的闡明對類的闡明格式格式: class : class private : private : public : public : protected : pr
2、otected : 闡明: class 是闡明類的關(guān)鍵字。 類的成員包括數(shù)據(jù)和函數(shù)。 用private 闡明的是私有成員,只能在類的定義中運(yùn)用,假設(shè)位置在先,private 可省。4. 類成員的默許訪問屬性為私有。5. 用public 闡明的成員為公有成員,可以被類以外的函數(shù)調(diào)用。6. 被維護(hù)的成員只能被派生類調(diào)用。7. 類的私有成員不能初始化。例:闡明一個(gè)“人類 class person private : char name8; unsigned age : 7; unsigned sex : 1; public : void Register(char *, int, char); vo
3、id Getname(char *); int Getage() ; char Getsex(); ;闡明: 類中人的根本屬性:姓名,年齡,性別。 對屬性操作的方法經(jīng)過類中定義的函數(shù),登錄:輸入姓名,性別,年齡。 此處的private可省。 不同權(quán)限的成員的書寫順序是恣意的。 在定義類時(shí),可以只給出函數(shù)原型,但在類內(nèi)和類外必需給出這些函數(shù)的定義。 假設(shè)在定義類的類外定義類中的函數(shù)成員時(shí),應(yīng)按一定的格式: type : ( ) 例:對類中的函數(shù)進(jìn)展定義 #include iostream.h#include class person private: char Name8; unsigned A
4、ge : 7; unsigned Sex : 1; public : void Register(const char*,int,char); void Getname(char*); int Getage(); char Getsex(); ;/以上對類的定義可以作為頭文件:#include “e10-1.h 替代。 void person:Register(const char *name, int age, char sex) strcpy(Name,name); Age=age; Sex=(sex=m? 0 : 1 ); void person:Getname(char *name)
5、strcpy(name, Name); /大寫為私有成員,小寫為外部成員 int person:Getage() /只需經(jīng)過函數(shù)方法才干得到私有成員的值 return Age; char person :Getsex() return (Sex=0 ? m:f); 內(nèi)部成員承當(dāng)中轉(zhuǎn)義務(wù):接納外部數(shù)據(jù),將內(nèi)部數(shù)據(jù)輸出封裝和維護(hù)。一定要清楚類成員和函數(shù)參數(shù)之間的關(guān)系。9.2.2 類與構(gòu)造的比較 一樣地方和不一樣地方9.2.3 內(nèi)聯(lián)成員函數(shù)內(nèi)聯(lián)成員函數(shù) 內(nèi)聯(lián)成員函數(shù)的定義及優(yōu)點(diǎn)內(nèi)聯(lián)成員函數(shù)的定義及優(yōu)點(diǎn)(用空間換時(shí)間用空間換時(shí)間) 在類闡明中定義成員函數(shù)的函數(shù)體,或者在類闡明中定義成員函數(shù)的函數(shù)體,或
6、者類外定義函數(shù)時(shí)用類外定義函數(shù)時(shí)用inline闡明。闡明。例:運(yùn)用例:運(yùn)用inline方法方法 #include “ex91.h inline void person :Register(const char *name, int age, char sex) strcopy(Name,name); Age=age; Sex=(sex=m ? 0 : 1 ); inline void person :Getname(char *name); strcpy(name, Name); inline void person :Getage() return Age ; inline char per
7、son :Getsex() return (Sex=0 ? m :f);例:運(yùn)用在定義類時(shí)定義函數(shù)體方法class person private : char Name8; unsigned Age : 7; unsigned Sex : 1; public : void Register(char *, int , char); void Getname(char *name) strcopy(name, Name); int Getage() return( Age); char Getsex() return (sex=0 ? m: f) ; ;inline void person :R
8、egister(const char *name, int age, char sex) strcopy(Name,name); Age=age; Sex=(sex=m ? 0 : 1 ); 9.3 對象對象對象是類的實(shí)體。對象是類的實(shí)體。對象是類類型的變量。對象是類類型的變量。9.3.1 對象的闡明對象的闡明格式:格式: 例:例:person pre1,pre2;闡明:闡明: 類闡明時(shí)不占用內(nèi)存,但闡明了對象,對象要類闡明時(shí)不占用內(nèi)存,但闡明了對象,對象要占內(nèi)存。占內(nèi)存。 對象的成員在內(nèi)存中按向量陳列。對象的成員在內(nèi)存中按向量陳列。 9.3.2 對象的運(yùn)用 象運(yùn)用構(gòu)造變量一樣。 對象.成員
9、對象.方法函數(shù) VB中,在窗體中輸出是:form.print 例: i= per1.Getage( ); per2.print 闡明:1. 類外只能訪問公有成員。 如:per1.Age 是錯(cuò)誤的。2. 對象可以整體賦值pre2=per1。3. 可以在闡明類時(shí)闡明對象。4. 對象可以作為函數(shù)的實(shí)參。例:運(yùn)用類、對象的實(shí)例輸入三個(gè)人的信息且輸出程序: #include iostream.h#include string.hclass person private : char Name8; unsigned Age : 7; unsigned Sex : 1; public : void Regi
10、ster(const char *,int,char); void Getname(char *name) strcpy(name, Name); int Getage() return Age; char Getsex() return (Sex=0 ? m: f); ;inline void person:Register(const char *name, int age, char sex) strcpy(Name,name); Age=age; Sex=(sex=m ? 0 : 1 ); void main() void out_dat(person); /person 是類名,對象
11、將作為參數(shù)。如函數(shù)闡明:int sum(int,int); char str20, c; int ag; person per1,per2,per3; coutstragc; per1.Register(str,ag,c); per2.Register(zhang, 22, f); per3.Register(zhou,23,m); coutper1:t; out_dat(per1); coutper2:t; out_dat(per2); coutper3:t; out_dat(per3); per2=per1; coutn per2:t; out_dat(per2);void out_dat
12、(person p)char str20;p.Getname(str);coutstrtp.Getage()tp.Getsex()no=no; /與person:no=no;等價(jià) strcpy(this-name,name); int Getno() return no;void Getname(char *name) strcpy(name,this-name);void out_dat(person p)char str20; int n; n=p.Getno(); p.Getname(str); coutntstrendl;void main() void out_dat(person)
13、; /person 是類名,對象將作為參數(shù)。如函數(shù)闡明:int sum(int,int); char name8; int no; person per1,per2,per3; coutnoname; per1.setno(no,name); per2.setno(12345,zhang); per3.setno(16789,zhou); coutper1:t; out_dat(per1); coutper2:t; out_dat(per2); coutper3:t; out_dat(per3); per2=per1; coutn per2:t; out_dat(per2);9.5 常成員9.
14、5.1 概念共享而又需求防止改動(dòng)的數(shù)據(jù)應(yīng)定義為常量進(jìn)展維護(hù)。9.5.2 常對象 類名 const 對象名或 const 類名 對象名 9.5.3 常成員函數(shù) 函數(shù)名( ) const9.5.3 常數(shù)據(jù)成員 const 成員名闡明: 常對象在定義時(shí)必需初始化,且不能更新。 常成員函數(shù)只能調(diào)用它的常成員函數(shù)。 常數(shù)據(jù)只能經(jīng)過構(gòu)造函數(shù)成員初始化。9.6 成員函數(shù)的重載 一個(gè)函數(shù)名,有多種作用。如何呼應(yīng)一個(gè)音訊完成相應(yīng)的功能那么由對象根據(jù)音訊的性質(zhì)決議。例:建立一個(gè)線性表,并完成結(jié)點(diǎn)元素的輸出(p181)。class Linear_List int *List; /線性表頭指針 unsigned nM
15、ax; /允許結(jié)點(diǎn)個(gè)數(shù) unsigned nElem; /實(shí)踐結(jié)點(diǎn)個(gè)數(shù)public: void Init(int n=10) /給線性表分配動(dòng)態(tài)節(jié)點(diǎn) List=new int(n); /數(shù)組指針 nMax=n; /成員初始化 nElem=0; int Elem(int); /成員函數(shù)重載 int &Elem(unsigned n) return Listn; unsigned Elem()return nElem; unsigned Max() return nMax; void Print(); /輸出 void Destroy() delete List; /收回內(nèi)存 ; /以上&
16、amp;Elem表示值為援用的函數(shù) ,前往一個(gè)變量。#include iostream.hint Linear_List:Elem(int elem) /建立線性表 if(nElemnMax) ListnElem+=elem; return nElem; return 0; void Linear_List:Print() /輸出線性表中元素值for(int i=0;i(int)nElem;i+) coutListiendl;void main() Linear_List list,list1; /定義兩個(gè)對象 list.Init(20); /調(diào)用構(gòu)造函數(shù)賦值 list1.Init(); /調(diào)
17、用構(gòu)造函數(shù)賦值 for(int i=1;i=5;i+) list.Elem(i); /只給對象list賦值coutnThe length of list1 is list1.Max() and there are list1.Elem ()elements in it.n;coutThe length of list is list.Max()and there are list.Elem () elements in it.n; list.Print(); list.Elem(3u)=100; /調(diào)用重載函數(shù)給第4個(gè)元素賦值(援用 list.Elem(20); /調(diào)用重載函數(shù)給第6個(gè)元素賦值 coutn Now,there are list.Elem()elements in list.n; list.Print(); /輸出節(jié)點(diǎn)元素
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 云計(jì)算環(huán)境下的資產(chǎn)策略-洞察分析
- 單招面試自我介紹(14篇)
- 網(wǎng)絡(luò)音樂平臺(tái)品牌建設(shè)-洞察分析
- 顧問勞動(dòng)合同三篇
- 2025工廠盤讓的合同范文
- 2025年中國帆行業(yè)市場全景評估及發(fā)展前景預(yù)測報(bào)告
- 2021-2026年中國腈綸纖維市場競爭策略及行業(yè)投資潛力預(yù)測報(bào)告
- 2023-2028年中國高筒靴行業(yè)市場深度分析及未來發(fā)展趨勢預(yù)測報(bào)告
- 醫(yī)學(xué)領(lǐng)域中大型會(huì)議的流程化組織方法論
- (2025)汽車零部件生產(chǎn)制造項(xiàng)目可行性研究報(bào)告寫作模板
- 營銷中心物業(yè)服務(wù)標(biāo)準(zhǔn)講解
- 五年級閱讀指導(dǎo)課(課堂PPT)
- 廣東飼料項(xiàng)目建議書(參考范文)
- 液堿濃度、密度對照表
- MODBUS通訊協(xié)議編程(VB源代碼)
- 焊工證項(xiàng)目新舊對照表
- 全國護(hù)士延續(xù)注冊體檢表
- 阿壩州近12a大風(fēng)時(shí)空分布特征分析
- 壓力管道安裝工藝和檢驗(yàn)規(guī)定
- 小學(xué)英語語音專項(xiàng)練習(xí)題(附答案)
- 2022年2022年財(cái)務(wù)部KPI考核指標(biāo)匯總
評論
0/150
提交評論