




已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
3.4 共用數(shù)據(jù)的保護(hù),本節(jié)主要內(nèi)容 3.4.1 常對象 3.4.2 常對象成員 3.4.3 指向?qū)ο蟮某V羔?3.4.4 指向常對象的指針變量 3.4.5 對象的常引用,1,3.4 共用數(shù)據(jù)的保護(hù),3.4.1 常對象 作用:定義一個(gè)對象時(shí),當(dāng)其數(shù)據(jù)成員的值不希望被修改時(shí),定義該對象為常對象。 與定義常變量類似,必須賦初值。 定義格式: 類名 const 對象名 (實(shí)參列表) 或 const 類名 對象名 (實(shí)參列表),2,3.4 共用數(shù)據(jù)的保護(hù),3.4.1 常對象 常對象不能調(diào)用非const型的成員函數(shù),除系統(tǒng)自動(dòng)調(diào)用的構(gòu)造函數(shù)和析構(gòu)函數(shù)之外。 常對象的所有數(shù)據(jù)成員的值是不能被修改的。 例: const time t(10,15,15); 或 time const t(10,15,15); t.get_time(); /要求必須是常成員函數(shù),3,3.4 共用數(shù)據(jù)的保護(hù),3.4.1 常對象 常對象的所有數(shù)據(jù)成員的值是不能被修改的。 編程時(shí)出現(xiàn)修改常對象數(shù)據(jù)成員值的需求,則將數(shù)據(jù)成員聲明為可變的數(shù)據(jù)成員,加mutable。 例: class mutable int hour; ; const time t(10,15,15); t.get_time(); void time:get_time() hour+=10; ,4,3.6 共用數(shù)據(jù)的保護(hù),本節(jié)主要內(nèi)容 3.6.1 常對象 3.6.2 常對象成員 3.6.3 指向?qū)ο蟮某V羔?3.6.4 指向常對象的指針變量 3.6.5 對象的常引用,5,3.6 共用數(shù)據(jù)的保護(hù),3.6.2 常對象成員 (一)常數(shù)據(jù)成員 與定義常變量一樣。 int const year; 或 const int year; 只能通過構(gòu)造函數(shù)的參數(shù)初始化表對常數(shù)據(jù)成員進(jìn)行初始化。 Date:Date (int y):year(y) 對常數(shù)據(jù)成員,該類所有對象中的該數(shù)據(jù)成員的值都是不能改變的,但不同的對象中該數(shù)據(jù)成員的值是可以不同的。,6,3.6 共用數(shù)據(jù)的保護(hù),3.6.2 常對象成員 (二)常成員函數(shù) 常成員函數(shù)只能引用本類中的數(shù)據(jù)成員,而不能修改它們。 注意:聲明和定義時(shí)都要加const關(guān)鍵字。 例:void get_time( ) const; 常成員函數(shù)引用數(shù)據(jù)成員情況表 (p90) 常對象中的成員函數(shù)未加const聲明,編譯器默認(rèn)為非const成員函數(shù)。,7,3.6 共用數(shù)據(jù)的保護(hù),本節(jié)主要內(nèi)容 3.6.1 常對象 3.6.2 常對象成員 3.6.3 指向?qū)ο蟮某V羔?3.6.4 指向常對象的指針變量 3.6.5 對象的常引用,8,3.6 共用數(shù)據(jù)的保護(hù),3.6.3 指向?qū)ο蟮某V羔?指向?qū)ο蟮某V羔槪簩⒅赶驅(qū)ο蟮闹羔樧兞柯暶鳛閏onst。 特點(diǎn):指向不能改變,即聲明時(shí)必須初始化。但可以改變指向?qū)ο髷?shù)據(jù)成員的值。 一般形式: 類名 * const 指針變量名= 常用作函數(shù)的形參,避免在函數(shù)的執(zhí)行過程中改變指針變量的指向。,9,P只能指向t1,3.4 共用數(shù)據(jù)的保護(hù),本節(jié)主要內(nèi)容 3.4.1 常對象 3.4.2 常對象成員 3.4.3 指向?qū)ο蟮某V羔?3.4.4 指向常對象的指針變量 3.4.5 對象的常引用,10,3.4 共用數(shù)據(jù)的保護(hù),3.4.4 指向常對象的指針變量 (一)指向常變量的指針變量 格式: const 類型 * 指針 或者 類型 const * 指針; 例如:const int a=5; /定義常變量 const int *p= /指向一個(gè)常變量 特點(diǎn):定義后,指針的指向可以改變,但指針指向?qū)ο蟮膬?nèi)容(值)不可以改變。 例:,11,12,void main( ) const int a = 78 ; const int b = 25 ; int c = 13 ; const int *pi = /正確 ,3.4 共用數(shù)據(jù)的保護(hù),3.4.4 指向常對象的指針變量 (二)指向常對象的指針變量 常對象,只能用指向常對象的指針指向它。 指向常對象的指針可以指向一個(gè)非常對象。 如果要改變非常對象數(shù)據(jù)成員的值可以直接改,但不能通過該指針改變。 例: Time t1(2,34,54); const Time *p=(),13,指向常對象的指針,非常對象,3.4 共用數(shù)據(jù)的保護(hù),本節(jié)主要內(nèi)容 3.4.1 常對象 3.4.2 常對象成員 3.4.3 指向?qū)ο蟮某V羔?3.4.4 指向常對象的指針變量 3.4.5 對象的常引用,14,3.4 共用數(shù)據(jù)的保護(hù),3.4.5 對象的常引用 (一)變量的常引用 例: int a=24; const int /錯(cuò)誤,常引用不能被更改,15,3.5 共用數(shù)據(jù)的保護(hù),3.4.5 對象的常引用 (二)對象的常引用 例: void fun(const Time ,16,在函數(shù)中不能改變t的值,t1的值也不能改變,3.4 共用數(shù)據(jù)的保護(hù),小結(jié) 理解常對象、常對象成員的定義和引用方式 理解指向?qū)ο蟮某V羔樀亩x和引用方式 了解指向常對象的指針變量的定義和引用方式 理解對象的常引用的定義和引用方式,17,在一個(gè)類中可以有公用的(public)成員和私有的(private)成員。在類外可以訪問公用成員,只有本類中的函數(shù)可以訪問本類的私有成員?,F(xiàn)在,我們來補(bǔ)充介紹一個(gè)例外友元(friend)。 友元可以訪問與其有好友關(guān)系的類中的私有成員。友元包括友元函數(shù)和友元類。,9.10 友元,如果在本類以外的其他地方定義了一個(gè)函數(shù),在類體中用friend對其進(jìn)行聲明,此函數(shù)就稱為本類的友元函數(shù)。友元函數(shù)不屬于該類,但可以訪問該類中的私有成員。,9.10.1 友元函數(shù),1、將普通函數(shù)聲明為友元函數(shù) 2、友元成員函數(shù): friend函數(shù)是另一個(gè)類中的成員函數(shù)。 類的提前引用聲明 3、 一個(gè)函數(shù)(包括普通函數(shù)和成員函數(shù))可以被多個(gè)類聲明為“朋友”,這樣就可以引用多個(gè)類中的私有數(shù)據(jù),將一個(gè)類(例如B類)聲明為另一個(gè)類(例如A類)的“朋友”。則友元類B中的所有函數(shù)都是A類的友元函數(shù),可以訪問A類中的所有成員。 聲明友元類的一般形式為 friend 類名; 如:class A friend B; ;,9.10.2 友元類,說明: (1) 友元的關(guān)系是單向的而不是雙向的。 (2) 友元的關(guān)系不能傳遞。 在實(shí)際工作中,除非確有必要,一般并不把整個(gè)類聲明為友元類,而只將確實(shí)有需要的成員函數(shù)聲明為友元函數(shù),這樣更安全一些。,友元的利弊: 面向?qū)ο蟪绦蛟O(shè)計(jì)的一個(gè)基本原則是封裝性和信息隱蔽,而友元卻可以訪問其他類中的私有成員,不能不說這是對封裝原則的一個(gè)小的破壞。 但是它能有助于數(shù)據(jù)共享,能提高程序的效率,在使用友元時(shí),要注意到它的副作用,不要過多地使用友元,只有在使用它能使程序精煉,并能大大提高程序的效率時(shí)才用友元。,3.8 類模板,函數(shù)模板 一般形式 Template 類模板 為什么要有類模板,為什么要使用類模板 如果要對功能相同、僅類的數(shù)據(jù)類型不同的各種情況,都重新定義一種新的類型,會(huì)產(chǎn)生較大的重復(fù)。例如:,class compare_int public: compare_int (int a, int b ) x=a; y=b; int max( ) return (xy)? x : y; private: int x,y; ; class compare_char public: compare_char (char a, char b ) x=a; y=b; char max( ) return (xy)? x : y; private: char x,y; ;,void main( ) compare_int c1( 5, 6 ); cout c1.max( ) endl; compare_char c2(a, f); cout c2.max( ) endl; ,類模板的定義: 為解決這一問題,C+引進(jìn)類模板的概念。我們在類的聲明前先加一行模板關(guān)鍵字。它用一個(gè)通用參數(shù) T 來替代不同的數(shù)據(jù)類型。類模板的定義格式為: template class /類體說明 ; 其中template 是關(guān)鍵字;中可以有多個(gè)參數(shù),其間用逗號分隔。 使用類模板定義對象的: 類模板名 對象名( 實(shí)參列表 ); 例如:下面是一個(gè)數(shù)組類模板的例子,#include template class compare public:
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 戰(zhàn)略合作委托代理運(yùn)輸合同
- 銷售代理合同模板
- 標(biāo)準(zhǔn)個(gè)人居間代理合同模板
- 超市兼職員工勞動(dòng)合同范本
- 智能家居定制合同
- 技術(shù)服務(wù)合同意向協(xié)議書
- 食品進(jìn)出口合同范本
- 家具維修與家庭生活習(xí)慣改變考核試卷
- 地震勘探儀器的采購與供應(yīng)鏈管理策略考核試卷
- 木地板行業(yè)人力資源管理與培訓(xùn)考核試卷
- 《價(jià)值觀培訓(xùn)》課件
- 2025年浙江長興文旅集團(tuán)招聘筆試參考題庫含答案解析
- 醫(yī)院臨床科研大數(shù)據(jù)平臺(tái)方案
- 2024年北京市中考生物真題卷及答案解析
- GA/T 761-2024停車庫(場)安全管理系統(tǒng)技術(shù)要求
- 《設(shè)施節(jié)水灌溉技術(shù)》課件
- 2023年涼山州西昌市人民醫(yī)院招聘衛(wèi)生專業(yè)技術(shù)人員考試真題
- (2024)湖南省公務(wù)員考試《行測》真題卷及答案解析
- 2025年部編教材的網(wǎng)絡(luò)培訓(xùn)心得體會(huì)
- 《籃球規(guī)則》課件
- 小學(xué)三年級每日英語單選題100道及答案解析
評論
0/150
提交評論