語言程序設(shè)計(jì)教程電子章類對象一_第1頁
語言程序設(shè)計(jì)教程電子章類對象一_第2頁
語言程序設(shè)計(jì)教程電子章類對象一_第3頁
語言程序設(shè)計(jì)教程電子章類對象一_第4頁
語言程序設(shè)計(jì)教程電子章類對象一_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第6章類和對象(一)6.1類的定義格式和對象的定義方法6.2對象的初始化6.3數(shù)據(jù)成員的類型和成員函數(shù)的特性6.4靜態(tài)成員6.5常成員6.6友元函數(shù)和友元類6.7函數(shù)的存儲類6.1

類的定義格式和對象的定義方法6.1.1

類的定義格式//說明部分

class<類名>{public:<成員函數(shù)和數(shù)據(jù)成員的說明或?qū)崿F(xiàn)>private:<數(shù)據(jù)成員和成員函數(shù)的說明或?qū)崿F(xiàn)>};//實(shí)現(xiàn)部分

<函數(shù)類型><類名>::<成員函數(shù)名>(<參數(shù)表>)

{<函數(shù)體>}定義類的一般格式:

關(guān)于類定義的若干說明如下。①定義類的關(guān)鍵字通常用class,也可以用struct等。②類的定義由兩大部分構(gòu)成:說明部分和實(shí)現(xiàn)部分。③類的成員分為數(shù)據(jù)成員和成員函數(shù)兩種。④類的成員具有訪問權(quán)。類成員的訪問權(quán)限有如下3種。public(公有的):公有成員不僅在類體內(nèi)是可見的,而且在類體外也是可見的。

private(私有的):私有成員僅在類體內(nèi)是可見的,在類體外是被隱藏的。

protected(保護(hù)的):保護(hù)成員對于定義它的類來講,相當(dāng)于私有成員;對于該類的派生類來講,相當(dāng)于公有成員。⑤成員函數(shù)可以定義在類體內(nèi),也可以定義在類體外。(1)先定義類類型,再定義對象這種分開定義對象的格式如下:

<類名><對象名表>;6.1.2

對象的定義方法

(2)定義類類型同時(shí)定義對象這種同時(shí)定義對象的格式如下:

class<類名>{<類體成員>}<對象名表>;(3)使用無名類直接定義對象用無名類直接定義對象的格式如下:

class{<類體成員說明與定義>}<對象名表>;(1)一般對象的成員表示用運(yùn)算符。

<對象名>.<數(shù)據(jù)成員名><對象名>.<成員函數(shù)名>(<參數(shù)表>)6.1.3

對象成員的表示(2)指向?qū)ο笾羔樀某蓡T表示用運(yùn)算符-><對象指針名>-><數(shù)據(jù)成員名><對象指針名>-><成員函數(shù)名>(<參數(shù)表>)(4)對象數(shù)組元素的成員表示同一般對象

<數(shù)組名>[<下標(biāo)>].<成員名>

見書中例6.1。6.2

對象的初始化

構(gòu)造函數(shù)的主要功能就是用來初始化對象。6.2.1

構(gòu)造函數(shù)的功能、種類和特征1.構(gòu)造函數(shù)的功能

構(gòu)造函數(shù)通常有如下3種。(1)默認(rèn)構(gòu)造函數(shù)這種構(gòu)造函數(shù)的特點(diǎn)是不帶參數(shù)。默認(rèn)構(gòu)造函數(shù)用戶可以定義。如果在一個(gè)類體中,用戶沒有定義任何構(gòu)造函數(shù)時(shí),系統(tǒng)會自動創(chuàng)建一個(gè)默認(rèn)的構(gòu)造函數(shù)。2.構(gòu)造函數(shù)的種類(2)帶參數(shù)的構(gòu)造函數(shù)構(gòu)造函數(shù)可以帶有一個(gè)或者多個(gè)參數(shù)。(3)拷貝構(gòu)造函數(shù)拷貝構(gòu)造函數(shù)是用來使用已知對象給所創(chuàng)建對象進(jìn)行初始化時(shí)所用的構(gòu)造函數(shù)。

拷貝構(gòu)造函數(shù)的格式如下:

<構(gòu)造函數(shù)名>(<類名>&<對象引用名>){<函數(shù)體>}

如果一個(gè)類中,用戶沒有定義拷貝構(gòu)造函數(shù)時(shí),系統(tǒng)自動創(chuàng)建一個(gè)默認(rèn)的拷貝構(gòu)造函數(shù)。

構(gòu)造函數(shù)還具有與一般成員函數(shù)不同的特點(diǎn)。①構(gòu)造函數(shù)的名字同類名。②說明或定義構(gòu)造函數(shù)時(shí)不必指出類型,也無任何返回值。③構(gòu)造函數(shù)是系統(tǒng)在創(chuàng)建對象時(shí)自動調(diào)用的。3.構(gòu)造函數(shù)的特點(diǎn)

析構(gòu)函數(shù)的功能正好與構(gòu)造函數(shù)相反,它是用來釋放所創(chuàng)建的對象的。一個(gè)對象在它的壽命結(jié)束時(shí),系統(tǒng)將會自動調(diào)用析構(gòu)函數(shù)將它釋放掉。6.2.2

析構(gòu)函數(shù)的功能和特點(diǎn)

析構(gòu)函數(shù)與一般成員函數(shù)不同的特點(diǎn)。①析構(gòu)函數(shù)名同類名,為與構(gòu)造函數(shù)區(qū)別在析構(gòu)函數(shù)名前加“~”符號。②析構(gòu)函數(shù)定義時(shí)不必給出類型,也無返回值,并且無參數(shù)。③析構(gòu)函數(shù)是由系統(tǒng)自動調(diào)用。

如果一個(gè)類體內(nèi),用戶沒有定義析構(gòu)函數(shù)時(shí),系統(tǒng)會自動創(chuàng)建一個(gè)默認(rèn)的析構(gòu)函數(shù)。析構(gòu)函數(shù)由于沒有參數(shù),它不能被重載。見書中例6.2,例6.3。

6.3

數(shù)據(jù)成員的類型和成員函數(shù)的特性6.3.1

類中數(shù)據(jù)成員類型的規(guī)定

類中數(shù)據(jù)成員的數(shù)據(jù)類型是沒有限制的。數(shù)據(jù)成員的存儲類只有靜態(tài)類。加存儲類說明符static的為靜態(tài)數(shù)據(jù)成員。1.成員函數(shù)可以重載6.3.2

成員函數(shù)的特性

成員函數(shù)可以重載,重載時(shí)應(yīng)遵循參數(shù)可以區(qū)別的規(guī)則。見書中例6.4。C++語言規(guī)定,成員函數(shù)如果被定義在類體內(nèi),則為內(nèi)聯(lián)函數(shù)。如果要使定義在類體外的函數(shù)也為內(nèi)聯(lián)函數(shù),需在定義時(shí)在函數(shù)頭前加上關(guān)鍵字inline。見書中例6.5。2.成員函數(shù)可以被說明為內(nèi)聯(lián)函數(shù)成員函數(shù)的參數(shù)可以設(shè)置為默認(rèn)值。見書中例6.6。3.成員函數(shù)的參數(shù)可以設(shè)置默認(rèn)值6.4靜態(tài)成員6.4.1

靜態(tài)數(shù)據(jù)成員

在類體內(nèi)使用關(guān)鍵字static說明的成員稱為靜態(tài)成員。靜態(tài)成員包括靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)兩種。靜態(tài)成員的特點(diǎn)是它不是屬于某對象的,而是屬于整個(gè)類的,即所有對象的。

對靜態(tài)數(shù)據(jù)成員初始化的方法是在類體外使用如下格式進(jìn)行初始化:

<數(shù)據(jù)類型><類名>::<數(shù)據(jù)成員名>=<初值>;

由于靜態(tài)數(shù)據(jù)成員不是屬于某個(gè)對象的,可以通過類名加作用域運(yùn)算符進(jìn)行引用。具體格式如下:

<類名>::<靜態(tài)數(shù)據(jù)成員名>;1.靜態(tài)數(shù)據(jù)成員的說明方法和初始化①靜態(tài)數(shù)據(jù)成員不是屬于某個(gè)對象,而是屬于整個(gè)類的。②靜態(tài)數(shù)據(jù)成員不隨對象的創(chuàng)建而分配內(nèi)存空間,它也不隨對象被釋放而撤銷。只有在程序結(jié)束時(shí)才被系統(tǒng)釋放。③靜態(tài)數(shù)據(jù)成員只能在類體外被初始化見書中例6.7。2.靜態(tài)數(shù)據(jù)成員的特點(diǎn)

說明靜態(tài)成員函數(shù)格式如下:

static<類型><成員函數(shù)名>(<參數(shù)表>); 引用靜態(tài)成員函數(shù)有如下兩種方式:

<類名>::<靜態(tài)成員函數(shù)名>(<參數(shù)表>)或者

<對象名>.<靜態(tài)成員函數(shù)名>(<參數(shù)表>)

在靜態(tài)成員函數(shù)中可以直接引用其靜態(tài)成員,而引用非靜態(tài)成員時(shí)需用對象名引用。見書中例6.8。6.4.2

靜態(tài)成員函數(shù)6.5

常成員

常數(shù)據(jù)成員格式如下:

const<類型><常數(shù)據(jù)成員名>常數(shù)據(jù)成員初始化是通過采用構(gòu)造函數(shù)的成員初始列表來實(shí)現(xiàn)的。構(gòu)造函數(shù)的成員初始化列表的格式如下:

<構(gòu)造函數(shù)名>(<參數(shù)表>):<成員初始化列表>{<函數(shù)體>}

見書中例6.9。6.5.1

常數(shù)據(jù)成員

常成員函數(shù)格式如下:

<類型><成員函數(shù)名>(<參數(shù)表>)const{<函數(shù)體>}

常成員函數(shù)可以引用const數(shù)據(jù)成員,也可以引用非const的數(shù)據(jù)成員。見書中例6.10。6.5.2

常成員函數(shù)6.6友元函數(shù)和友元類

友元函數(shù)是說明在類體內(nèi)的一般函數(shù),它不是這個(gè)類中的成員函數(shù),但是它訪問該類所有成員。友元函數(shù)說明格式如下:

friend<類型><函數(shù)名>(<參數(shù)表>)6.6.1

友元函數(shù)

使用友元函數(shù)時(shí)應(yīng)注意如下幾點(diǎn)。①友元函數(shù)前邊加friend關(guān)鍵字,說明在類體內(nèi)。如被定義在類體外,不加類名限定。②友元函數(shù)可以訪問類中的私有成員和其他成員。③友元函數(shù)的作用在于可以提高程序的運(yùn)行效率。。④友元函數(shù)在調(diào)用上同一般函數(shù)。見書中例6.11。

將一個(gè)類作為另一個(gè)類的友元,則該類稱為友元類。友元類中的所有成員函數(shù)都是這個(gè)類的友元函數(shù)。說明友元類的形式如下:

friendclass<類名>;6.6.2

友元類

使用友元類應(yīng)注意下述事項(xiàng)。①友元關(guān)系是不可逆的。B類是A類的友元類,不等于A類是B類的友元類。②友元關(guān)系是不可傳遞的。B類是A類的友元類,C類是B類的友元類,C類不一定就是A類的友元類。見書中例6.12。6.7類型轉(zhuǎn)換C++語言編譯系統(tǒng)提供內(nèi)部數(shù)據(jù)類型的自動隱含轉(zhuǎn)換規(guī)則如下。①在執(zhí)行算術(shù)運(yùn)算時(shí),低類型自動轉(zhuǎn)換為高類型。②在賦值表達(dá)式中,賦值運(yùn)算符右邊表達(dá)式的類型自動轉(zhuǎn)換為左邊變量的類型。6.7.1

類型的隱含轉(zhuǎn)換③在函數(shù)調(diào)用時(shí),將調(diào)用函數(shù)的實(shí)參初始化形參,系統(tǒng)將實(shí)參轉(zhuǎn)換為形參類型后,再進(jìn)行傳值。這里的隱含轉(zhuǎn)換通常是低類型轉(zhuǎn)換為高類型。④在函數(shù)有返回值時(shí),系統(tǒng)自動將返回的表達(dá)式的類型轉(zhuǎn)換為該函數(shù)的類型后,再將表達(dá)式的值返回給調(diào)用函數(shù)。在程序中,出現(xiàn)上述轉(zhuǎn)換時(shí),如果數(shù)據(jù)精度受損失,系統(tǒng)會報(bào)錯(cuò)。6.7.2

一般數(shù)據(jù)類型轉(zhuǎn)換為類類型

使用一個(gè)參數(shù)的構(gòu)造函數(shù)可將某種數(shù)據(jù)類型轉(zhuǎn)換為該構(gòu)造函數(shù)所屬類的類型。見書中例6.13。6.7.3

類類型轉(zhuǎn)換為一般數(shù)據(jù)類型

通過在類中定義類型轉(zhuǎn)換函數(shù)可以實(shí)現(xiàn)由某種類類型轉(zhuǎn)換為某種指定的數(shù)據(jù)類型的操作。類型轉(zhuǎn)換函數(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論