類(lèi)的定義
考點(diǎn)1 類(lèi)的定義
C++語(yǔ)言的類(lèi)是一種用戶(hù)自己定義的數(shù)據(jù)類(lèi)型,和其他的數(shù)據(jù)類(lèi)型不同的地方是組成這種類(lèi)型的不僅可以有數(shù)據(jù)還可以有對(duì)數(shù)據(jù)進(jìn)行操作的函數(shù),它們分別叫做類(lèi)的數(shù)據(jù)成員和類(lèi)的函數(shù)成員。類(lèi)是面向?qū)ο蟪绦蛟O(shè)計(jì)的核心,數(shù)據(jù)封裝就是通過(guò)類(lèi)來(lái)實(shí)現(xiàn)的。 類(lèi)是對(duì)一組性質(zhì)相同對(duì)象的描述。類(lèi)的定義形式一般分為說(shuō)明部分和實(shí)現(xiàn)部分。說(shuō)明部分是用來(lái)說(shuō)明該類(lèi)中的成員,實(shí)現(xiàn)部分是用來(lái)對(duì)成員函數(shù)的定義。類(lèi)的一般定義形式為: class<類(lèi)名> { private: <私有的數(shù)據(jù)和函數(shù)> public: <公有的數(shù)據(jù)和函數(shù)> protected: <保護(hù)的數(shù)據(jù)和函數(shù)> }; <各個(gè)成員函數(shù)的實(shí)現(xiàn)> 其中,類(lèi)定義以關(guān)鍵字class開(kāi)始,其后跟類(lèi)名,類(lèi)名必須是一個(gè)有效的C++標(biāo)識(shí)符。 類(lèi)所說(shuō)明的內(nèi)容用花括號(hào)括起來(lái),右花括號(hào)后的分號(hào)的作用是類(lèi)說(shuō)明語(yǔ)句的結(jié)束標(biāo)志!皗}”之間的內(nèi)容稱(chēng)為類(lèi)體。關(guān)鍵字private,public和protected稱(chēng)為訪問(wèn)權(quán)限修飾符或訪問(wèn)控制修飾符,它們用于限制類(lèi)成員的控制訪問(wèn)范圍,如果沒(méi)有使用多,則所有成員默認(rèn)定義為private權(quán)限。這些關(guān)鍵字的聲明順序和次數(shù)都是任意的。<各個(gè)成員函數(shù)的實(shí)現(xiàn)>是類(lèi)定義中的實(shí)現(xiàn)部分,這部分包含所有在類(lèi)體內(nèi)說(shuō)明的成員函數(shù)的定義。各個(gè)成員函數(shù)的實(shí)體內(nèi)類(lèi)體內(nèi)定義,又可以在類(lèi)體外定義。如果一個(gè)成員函數(shù)在類(lèi)體內(nèi)定義,實(shí)現(xiàn)部分將不出現(xiàn);如果所有的成員數(shù)都在類(lèi)體內(nèi)定義,則實(shí)現(xiàn)部分可以省略在類(lèi)體內(nèi)定義的成員函數(shù)都是內(nèi)聯(lián)函數(shù)。
小提示: C++規(guī)定任何數(shù)據(jù)類(lèi)型都必須先定義后使用,類(lèi)也不例外。
考點(diǎn)2 類(lèi)成員的訪問(wèn)控制
類(lèi)成員均具有一個(gè)屬性,叫做訪問(wèn)控制權(quán)限。所以從訪問(wèn)權(quán)限上來(lái)講,類(lèi)的成員又分為私有的(private),公有的(public)和保護(hù)的( protected) 3類(lèi)。公有成員定義了類(lèi)的外部接口,只有公有成員才能被用戶(hù)程序直接訪問(wèn);私有成員定義了類(lèi)的內(nèi)部使用的數(shù)據(jù)和函數(shù),私有成員只能被自己所屬類(lèi)的成員函數(shù)及友元函數(shù)訪問(wèn);保護(hù)成員存取權(quán)限介于公有成員和私有成員之間,它在類(lèi)的繼承和派生中使用。
小提示: 一個(gè)類(lèi)可以沒(méi)有私有成員,但是不能沒(méi)有公有成員。
考點(diǎn)3 類(lèi)的數(shù)據(jù)成員和類(lèi)的函數(shù)成員
1.類(lèi)的數(shù)據(jù)成員 數(shù)據(jù)成員是類(lèi)的一個(gè)重要組成部分,它描述了對(duì)象的內(nèi)部數(shù)據(jù)結(jié)構(gòu)。類(lèi)的數(shù)據(jù)成員是類(lèi)的基礎(chǔ),應(yīng)該正確、完整地定義類(lèi)的數(shù)據(jù)成員。定義類(lèi)的數(shù)據(jù)成員應(yīng)注意: (1)在類(lèi)體中不允許對(duì)所定義的數(shù)據(jù)成員進(jìn)行初始化。 (2)類(lèi)中的數(shù)據(jù)成員的類(lèi)型可以是任意的,包含整型、浮點(diǎn)型、字符型、數(shù)組、 指針和引用等,也可以是對(duì)象。另一個(gè)類(lèi)的對(duì)象可以作為該類(lèi)的成員,但是自身類(lèi)的對(duì)象是不可以的,而自身類(lèi)的指針或引用則是可以的。當(dāng)一個(gè)類(lèi)的對(duì)象作為這個(gè)類(lèi)的成員時(shí),如果另一個(gè)類(lèi)的定義在后,則需要提前說(shuō)明。 2.類(lèi)的函數(shù)成員 函數(shù)成員實(shí)現(xiàn)對(duì)類(lèi)中數(shù)據(jù)成員的操作,它描述了類(lèi)的行為。由于對(duì)象的封裝性,類(lèi)的函數(shù)成員是對(duì)類(lèi)的私有數(shù)據(jù)成員進(jìn)行操作的惟一途徑。類(lèi)中所有的函數(shù)成員都必須在類(lèi)體中說(shuō)明,但函數(shù)成員的定義既可在類(lèi)體內(nèi),也可在類(lèi)體外。 (1)在類(lèi)體內(nèi)直接給出函數(shù)的定義。例如,下面是在類(lèi)體內(nèi)給出類(lèi)成員函數(shù)實(shí)現(xiàn)的例子: class Shijian{ private: int Shi,F(xiàn)en,Miao; public: void Set(int S, int F, int M)//可省略此成員函數(shù)的變量標(biāo)識(shí)符 {Shi=S; Fen=F; Miao=M;} void Display(){ cout<<"現(xiàn)在時(shí)間是:"; cout< } }; (2)在類(lèi)體外給出函數(shù)的定義。定義形式如下: <返回類(lèi)型><類(lèi)名>::<成員函數(shù)名>(<參數(shù)表>) {<成員函數(shù)體>} 成員函數(shù)定義的結(jié)構(gòu)與普通函數(shù)不同之處是在返回類(lèi)型和函數(shù)名之間加了一個(gè)類(lèi)名和雙冒號(hào)“::”。::是作用域運(yùn)算符,用來(lái)標(biāo)識(shí)成員函數(shù)或數(shù)據(jù)成員是屬于哪個(gè)類(lèi)的實(shí)理成員函數(shù)時(shí)參數(shù)表中的形參變量標(biāo)識(shí)符可以省略。例如,實(shí)現(xiàn)上例中的成員函數(shù)Diaplay(): void Shijian::Disptay() {cout<<"現(xiàn)在時(shí)間是:"; cout< 另外,類(lèi)成員函數(shù)同普通函數(shù)一樣,也可以進(jìn)行重載及其默認(rèn)參數(shù)。
小提示: 類(lèi)的每個(gè)成員函數(shù)在說(shuō)明中最后的分號(hào)不可省略,但在類(lèi)體內(nèi)實(shí)現(xiàn)時(shí)省略分號(hào)。
|