![語言程序設(shè)計教程電子章類對象一_第1頁](http://file4.renrendoc.com/view12/M05/17/07/wKhkGWXXH66AGOmFAAFvl0GbfCA148.jpg)
![語言程序設(shè)計教程電子章類對象一_第2頁](http://file4.renrendoc.com/view12/M05/17/07/wKhkGWXXH66AGOmFAAFvl0GbfCA1482.jpg)
![語言程序設(shè)計教程電子章類對象一_第3頁](http://file4.renrendoc.com/view12/M05/17/07/wKhkGWXXH66AGOmFAAFvl0GbfCA1483.jpg)
![語言程序設(shè)計教程電子章類對象一_第4頁](http://file4.renrendoc.com/view12/M05/17/07/wKhkGWXXH66AGOmFAAFvl0GbfCA1484.jpg)
![語言程序設(shè)計教程電子章類對象一_第5頁](http://file4.renrendoc.com/view12/M05/17/07/wKhkGWXXH66AGOmFAAFvl0GbfCA1485.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(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)>};//實現(xiàn)部分
<函數(shù)類型><類名>::<成員函數(shù)名>(<參數(shù)表>)
{<函數(shù)體>}定義類的一般格式:
關(guān)于類定義的若干說明如下。①定義類的關(guān)鍵字通常用class,也可以用struct等。②類的定義由兩大部分構(gòu)成:說明部分和實現(xiàn)部分。③類的成員分為數(shù)據(jù)成員和成員函數(shù)兩種。④類的成員具有訪問權(quán)。類成員的訪問權(quán)限有如下3種。public(公有的):公有成員不僅在類體內(nèi)是可見的,而且在類體外也是可見的。
private(私有的):私有成員僅在類體內(nèi)是可見的,在類體外是被隱藏的。
protected(保護的):保護成員對于定義它的類來講,相當(dāng)于私有成員;對于該類的派生類來講,相當(dāng)于公有成員。⑤成員函數(shù)可以定義在類體內(nèi),也可以定義在類體外。(1)先定義類類型,再定義對象這種分開定義對象的格式如下:
<類名><對象名表>;6.1.2
對象的定義方法
(2)定義類類型同時定義對象這種同時定義對象的格式如下:
class<類名>{<類體成員>}<對象名表>;(3)使用無名類直接定義對象用無名類直接定義對象的格式如下:
class{<類體成員說明與定義>}<對象名表>;(1)一般對象的成員表示用運算符。
<對象名>.<數(shù)據(jù)成員名><對象名>.<成員函數(shù)名>(<參數(shù)表>)6.1.3
對象成員的表示(2)指向?qū)ο笾羔樀某蓡T表示用運算符-><對象指針名>-><數(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ù)的特點是不帶參數(shù)。默認(rèn)構(gòu)造函數(shù)用戶可以定義。如果在一個類體中,用戶沒有定義任何構(gòu)造函數(shù)時,系統(tǒng)會自動創(chuàng)建一個默認(rèn)的構(gòu)造函數(shù)。2.構(gòu)造函數(shù)的種類(2)帶參數(shù)的構(gòu)造函數(shù)構(gòu)造函數(shù)可以帶有一個或者多個參數(shù)。(3)拷貝構(gòu)造函數(shù)拷貝構(gòu)造函數(shù)是用來使用已知對象給所創(chuàng)建對象進行初始化時所用的構(gòu)造函數(shù)。
拷貝構(gòu)造函數(shù)的格式如下:
<構(gòu)造函數(shù)名>(<類名>&<對象引用名>){<函數(shù)體>}
如果一個類中,用戶沒有定義拷貝構(gòu)造函數(shù)時,系統(tǒng)自動創(chuàng)建一個默認(rèn)的拷貝構(gòu)造函數(shù)。
構(gòu)造函數(shù)還具有與一般成員函數(shù)不同的特點。①構(gòu)造函數(shù)的名字同類名。②說明或定義構(gòu)造函數(shù)時不必指出類型,也無任何返回值。③構(gòu)造函數(shù)是系統(tǒng)在創(chuàng)建對象時自動調(diào)用的。3.構(gòu)造函數(shù)的特點
析構(gòu)函數(shù)的功能正好與構(gòu)造函數(shù)相反,它是用來釋放所創(chuàng)建的對象的。一個對象在它的壽命結(jié)束時,系統(tǒng)將會自動調(diào)用析構(gòu)函數(shù)將它釋放掉。6.2.2
析構(gòu)函數(shù)的功能和特點
析構(gòu)函數(shù)與一般成員函數(shù)不同的特點。①析構(gòu)函數(shù)名同類名,為與構(gòu)造函數(shù)區(qū)別在析構(gòu)函數(shù)名前加“~”符號。②析構(gòu)函數(shù)定義時不必給出類型,也無返回值,并且無參數(shù)。③析構(gòu)函數(shù)是由系統(tǒng)自動調(diào)用。
如果一個類體內(nèi),用戶沒有定義析構(gòu)函數(shù)時,系統(tǒng)會自動創(chuàng)建一個默認(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ù)可以重載,重載時應(yīng)遵循參數(shù)可以區(qū)別的規(guī)則。見書中例6.4。C++語言規(guī)定,成員函數(shù)如果被定義在類體內(nèi),則為內(nèi)聯(lián)函數(shù)。如果要使定義在類體外的函數(shù)也為內(nèi)聯(lián)函數(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)成員的特點是它不是屬于某對象的,而是屬于整個類的,即所有對象的。
對靜態(tài)數(shù)據(jù)成員初始化的方法是在類體外使用如下格式進行初始化:
<數(shù)據(jù)類型><類名>::<數(shù)據(jù)成員名>=<初值>;
由于靜態(tài)數(shù)據(jù)成員不是屬于某個對象的,可以通過類名加作用域運算符進行引用。具體格式如下:
<類名>::<靜態(tài)數(shù)據(jù)成員名>;1.靜態(tài)數(shù)據(jù)成員的說明方法和初始化①靜態(tài)數(shù)據(jù)成員不是屬于某個對象,而是屬于整個類的。②靜態(tài)數(shù)據(jù)成員不隨對象的創(chuàng)建而分配內(nèi)存空間,它也不隨對象被釋放而撤銷。只有在程序結(jié)束時才被系統(tǒng)釋放。③靜態(tài)數(shù)據(jù)成員只能在類體外被初始化見書中例6.7。2.靜態(tài)數(shù)據(jù)成員的特點
說明靜態(tài)成員函數(shù)格式如下:
static<類型><成員函數(shù)名>(<參數(shù)表>); 引用靜態(tài)成員函數(shù)有如下兩種方式:
<類名>::<靜態(tài)成員函數(shù)名>(<參數(shù)表>)或者
<對象名>.<靜態(tài)成員函數(shù)名>(<參數(shù)表>)
在靜態(tài)成員函數(shù)中可以直接引用其靜態(tài)成員,而引用非靜態(tài)成員時需用對象名引用。見書中例6.8。6.4.2
靜態(tài)成員函數(shù)6.5
常成員
常數(shù)據(jù)成員格式如下:
const<類型><常數(shù)據(jù)成員名>常數(shù)據(jù)成員初始化是通過采用構(gòu)造函數(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ù),它不是這個類中的成員函數(shù),但是它訪問該類所有成員。友元函數(shù)說明格式如下:
friend<類型><函數(shù)名>(<參數(shù)表>)6.6.1
友元函數(shù)
使用友元函數(shù)時應(yīng)注意如下幾點。①友元函數(shù)前邊加friend關(guān)鍵字,說明在類體內(nèi)。如被定義在類體外,不加類名限定。②友元函數(shù)可以訪問類中的私有成員和其他成員。③友元函數(shù)的作用在于可以提高程序的運行效率。。④友元函數(shù)在調(diào)用上同一般函數(shù)。見書中例6.11。
將一個類作為另一個類的友元,則該類稱為友元類。友元類中的所有成員函數(shù)都是這個類的友元函數(shù)。說明友元類的形式如下:
friendclass<類名>;6.6.2
友元類
使用友元類應(yī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ù)運算時,低類型自動轉(zhuǎn)換為高類型。②在賦值表達式中,賦值運算符右邊表達式的類型自動轉(zhuǎn)換為左邊變量的類型。6.7.1
類型的隱含轉(zhuǎn)換③在函數(shù)調(diào)用時,將調(diào)用函數(shù)的實參初始化形參,系統(tǒng)將實參轉(zhuǎn)換為形參類型后,再進行傳值。這里的隱含轉(zhuǎn)換通常是低類型轉(zhuǎn)換為高類型。④在函數(shù)有返回值時,系統(tǒng)自動將返回的表達式的類型轉(zhuǎn)換為該函數(shù)的類型后,再將表達式的值返回給調(diào)用函數(shù)。在程序中,出現(xiàn)上述轉(zhuǎn)換時,如果數(shù)據(jù)精度受損失,系統(tǒng)會報錯。6.7.2
一般數(shù)據(jù)類型轉(zhuǎn)換為類類型
使用一個參數(shù)的構(gòu)造函數(shù)可將某種數(shù)據(jù)類型轉(zhuǎn)換為該構(gòu)造函數(shù)所屬類的類型。見書中例6.13。6.7.3
類類型轉(zhuǎn)換為一般數(shù)據(jù)類型
通過在類中定義類型轉(zhuǎn)換函數(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度花椒種植基地土地流轉(zhuǎn)與經(jīng)營權(quán)租賃合同
- 二零二五年度物流倉儲投資補充協(xié)議書
- 2025年度古建筑修復(fù)專用鐵藝欄桿施工合同
- 2025年度美容院美容院加盟店管理合同范本2篇
- 二零二五年度品牌形象重塑與品牌重塑合同3篇
- 消渴病的健康教育
- 2025年中國化機漿行業(yè)市場動態(tài)分析、發(fā)展方向及投資前景分析報告
- 電信業(yè)務(wù)創(chuàng)新助力企業(yè)市場拓展的策略分析
- 現(xiàn)代酒店餐飲空間的照明設(shè)計與氛圍營造
- 環(huán)境科學(xué)類專業(yè)與綠色產(chǎn)業(yè)的未來發(fā)展
- 周口2024年河南周口市公安機關(guān)招聘輔警458人筆試歷年參考題庫附帶答案詳解
- 《頭面部穴位按摩》課件
- 2024美團簡化版商家合作合同標(biāo)準(zhǔn)文本一
- 2025年貴州黔源電力股份有限公司招聘筆試參考題庫含答案解析
- 《休閑食品加工技術(shù)》 課件 1 休閑食品生產(chǎn)與職業(yè)生活
- 春季開學(xué)安全第一課
- 《病史采集》課件
- 十大護理安全隱患
- 2025年新生兒黃疸診斷與治療研究進展
- 廣東大灣區(qū)2024-2025學(xué)年度高一上學(xué)期期末統(tǒng)一測試英語試題(無答案)
- 失效模式和效應(yīng)分析護理
評論
0/150
提交評論