




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第第4章章 類與對象類與對象4.1 類定義與對象聲明類定義與對象聲明4.2 對象的使用對象的使用4.3 對象成員對象成員4.4 友員友員 friend4.5 靜態成員和對象組靜態成員和對象組 織織4.6 模板模板4.7 應用舉例應用舉例第七講 類與對象 4.4 友員 (friend) 第第4章章 類與對象類與對象4.1 類定義與對象聲明類定義與對象聲明4.2 對象的使用對象的使用4.3 對象成員對象成員4.4 友員友員 friend4.5 靜態成員和對象組靜態成員和對象組 織織4.6 模板模板4.7 應用舉例應用舉例什么要定義友員 類中的私有數據不能 被外部任意訪問修改, 只能 由類本身的函數
2、訪問修改.友員 ( friend )友員的作用 被定義為友員的類或函數 可以訪問修改類的私有數據.第第4章章 類與對象類與對象4.1 類定義與對象聲明類定義與對象聲明4.2 對象的使用對象的使用4.3 對象成員對象成員4.4 友員友員 friend4.5 靜態成員和對象組靜態成員和對象組 織織4.6 模板模板4.7 應用舉例應用舉例友員的定義形式 在類內定義:友員類: friend class 友員類名; 友員成員函數: friend 返回值類型 類名:函數名;友員函數: friend 函數原型聲明;第第4章章 類與對象類與對象4.1 類定義與對象聲明類定義與對象聲明4.2 對象的使用對象的使
3、用4.3 對象成員對象成員4.4 友員友員 friend4.5 靜態成員和對象組靜態成員和對象組 織織4.6 模板模板4.7 應用舉例應用舉例友員類定義形式 將一類聲明為另一類的友員.例1. 先定義兩個類“學生” st_n 和“成績” sco, 再將 sco 定義為 st_n 的友員. 注意:我們將兩個類放在一個文件內,而 不是通常的多個文件,主要是避免 篇幅太長。 第第4章章 類與對象類與對象4.1 類定義與對象聲明類定義與對象聲明4.2 對象的使用對象的使用4.3 對象成員對象成員4.4 友員友員 friend4.5 靜態成員和對象組靜態成員和對象組 織織4.6 模板模板4.7 應用舉例應
4、用舉例#include #include class st_n public: ; st_n(char *n1, char *n2) name=new charstrlen(n1)+1; num =new charstrlen(n2)+1; strcpy(name, n1); strcpy(num, n2); void dsp( ) cout n name: name n num: num; char *name, *num; /學生姓名、學號。第第4章章 類與對象類與對象4.1 類定義與對象聲明類定義與對象聲明4.2 對象的使用對象的使用4.3 對象成員對象成員4.4 友員友員 friend
5、4.5 靜態成員和對象組靜態成員和對象組 織織4.6 模板模板4.7 應用舉例應用舉例class sco public: ; sco(int i1, int i2) :mat(i1),eng(i2) void show( ) cout n mathematics: mat n english: eng; int mat, eng; /學生數學、英語成績。第第4章章 類與對象類與對象4.1 類定義與對象聲明類定義與對象聲明4.2 對象的使用對象的使用4.3 對象成員對象成員4.4 友員友員 friend4.5 靜態成員和對象組靜態成員和對象組 織織4.6 模板模板4.7 應用舉例應用舉例void
6、 main( ) st_n a( Wang , 123456 ); /創建對象 sco b(72, 82); /創建對象 a.dsp( ); /打印姓名、學號 b.show( ); /打印數學、英語成績結果: name: Wang num: 12345 mathematics:72 english: 82問題:定義了兩個類 a,b,且相互不能訪問私有數據,把一個有聯系類分成了兩個。第第4章章 類與對象類與對象4.1 類定義與對象聲明類定義與對象聲明4.2 對象的使用對象的使用4.3 對象成員對象成員4.4 友員友員 friend4.5 靜態成員和對象組靜態成員和對象組 織織4.6 模板模板4.
7、7 應用舉例應用舉例#include #include class st_n public: ; st_n(char *n1, char *n2) name=new charstrlen(n1)+1; num =new charstrlen(n2)+1; strcpy(name, n1); strcpy(num, n2); /沒有函數dsp( ) friend class sco; /定義友員類char *name, *num; /學生姓名、學號。/應用友員重新定義類 st_n 和 sco/注意與前面類st_n 和sco的區別 第第4章章 類與對象類與對象4.1 類定義與對象聲明類定義與對象聲
8、明4.2 對象的使用對象的使用4.3 對象成員對象成員4.4 友員友員 friend4.5 靜態成員和對象組靜態成員和對象組 織織4.6 模板模板4.7 應用舉例應用舉例class sco public: ; sco(int i1, int i2) :mat(i1),eng(i2) void show( ) cout n mathematics: mat n english: eng; int mat, eng; /學生數學、英語成績。void show( st_n &st) cout n name: n num: st.num; 第第4章章 類與對象類與對象4.1 類
9、定義與對象聲明類定義與對象聲明4.2 對象的使用對象的使用4.3 對象成員對象成員4.4 友員友員 friend4.5 靜態成員和對象組靜態成員和對象組 織織4.6 模板模板4.7 應用舉例應用舉例void main( ) st_n a(Wang , 123456 ); /創建對象 sco b(72, 82); /創建對象 b.show(a); /打印姓名、學號 b.show( ); /打印數學、英語成績結果: name: Wang num: 12345 mathematics:72 english: 82注意:定義了兩個類 a,b,但b能訪問私有數據,建立了類之間的聯系。第第4章章 類與對象
10、類與對象4.1 類定義與對象聲明類定義與對象聲明4.2 對象的使用對象的使用4.3 對象成員對象成員4.4 友員友員 friend4.5 靜態成員和對象組靜態成員和對象組 織織4.6 模板模板4.7 應用舉例應用舉例例1 有關內容總結1. 定義了類 sco 是類 st_n 的友員,建立了 類之間的聯系。使編程顯得更便利。 2. 友員可以訪問并修改類的私有和保護數 據,調用類的私有和保護函數,使類不 至于由于封裝而增加了編程的復雜性??偟哪繕耍菏雇獠款惸茉L問修改類的私有或保護數據、能調用類的私有或保護函數。第第4章章 類與對象類與對象4.1 類定義與對象聲明類定義與對象聲明4.2 對象的使用對象
11、的使用4.3 對象成員對象成員4.4 友員友員 friend4.5 靜態成員和對象組靜態成員和對象組 織織4.6 模板模板4.7 應用舉例應用舉例友員成員函數什么是友員成員函數 將一個類的成員 函數(不是類全部)聲明為一個類的友 員,使這個函數能訪問類的私有和保護 成員。聲明形式 friend 返回類型 類名:函數名例如: friend void sco:show( );第第4章章 類與對象類與對象4.1 類定義與對象聲明類定義與對象聲明4.2 對象的使用對象的使用4.3 對象成員對象成員4.4 友員友員 friend4.5 靜態成員和對象組靜態成員和對象組 織織4.6 模板模板4.7 應用舉
12、例應用舉例#include #include class st_n; /僅為原型定義,具體實現在后面class sco public: ; sco(int i1, int i2) :mat(i1),eng(i2) void show( ) cout n mathematics: mat n english: eng; int mat, eng; /學生數學、英語成績。void show( st_n &st); /由于還沒有具體定 /義, 所以函數show 的實現在后面.例 2. 友員成員函數第第4章章 類與對象類與對象4.1 類定義與對象聲明類定義與對象聲明4.2 對象的使用對象的使用
13、4.3 對象成員對象成員4.4 友員友員 friend4.5 靜態成員和對象組靜態成員和對象組 織織4.6 模板模板4.7 應用舉例應用舉例class st_n public: ; st_n(char *n1, char *n2) name=new charstrlen(n1)+1; num =new charstrlen(n2)+1; strcpy(name, n1); strcpy(num, n2); friend void sco:show(st_n &); /定義友員 char *name, *num; /學生姓名、學號。void sco:show( st_n &st)
14、 cout n name: n num: st.num; show( ); 第第4章章 類與對象類與對象4.1 類定義與對象聲明類定義與對象聲明4.2 對象的使用對象的使用4.3 對象成員對象成員4.4 友員友員 friend4.5 靜態成員和對象組靜態成員和對象組 織織4.6 模板模板4.7 應用舉例應用舉例void main( ) st_n a(Wang , 123456 ); /創建對象 sco b(72, 82); /創建對象 b.show(a); /打印姓名、學號、成績結果: name: Wang num: 12345 mathematics:72 english:
15、82注意:定義了兩個類 a,b,且b的成員函數show 能訪問私有數據,建立了類與類成員函數之間的聯系。第第4章章 類與對象類與對象4.1 類定義與對象聲明類定義與對象聲明4.2 對象的使用對象的使用4.3 對象成員對象成員4.4 友員友員 friend4.5 靜態成員和對象組靜態成員和對象組 織織4.6 模板模板4.7 應用舉例應用舉例例2 有關內容總結1. 定義了類 sco 中的函數 show 是類 st_n 的友員,建立了類和類成員函數之間的 聯系。使編程顯得更便利。 2. 友員成員函數可以訪問并修改類的私有 或保護數據,調用類的私有或保護函數 使類不至于由于封裝而增加了編程的復 雜性。
16、總的目標:使外部類的成員函數能訪問修改類的私有或保護數據、能調用類的私有或保護函數。與友員類的區別是僅將部分成員函數聲明為友員, 而不是整個類.第第4章章 類與對象類與對象4.1 類定義與對象聲明類定義與對象聲明4.2 對象的使用對象的使用4.3 對象成員對象成員4.4 友員友員 friend4.5 靜態成員和對象組靜態成員和對象組 織織4.6 模板模板4.7 應用舉例應用舉例友員函數什么是友員函數 將一個外部函數(不 是類全部,也不是部分成員函數)聲明 為一個類的友員,使這個函數能訪問類 的私有和保護成員。聲明形式 friend 返回類型 函數名(形參);例如: friend void sh
17、ow(st_n &st);第第4章章 類與對象類與對象4.1 類定義與對象聲明類定義與對象聲明4.2 對象的使用對象的使用4.3 對象成員對象成員4.4 友員友員 friend4.5 靜態成員和對象組靜態成員和對象組 織織4.6 模板模板4.7 應用舉例應用舉例#include #include class st_n public: ; st_n(char *n1, char *n2) name=new charstrlen(n1)+1; num =new charstrlen(n2)+1; strcpy(name, n1); strcpy(num, n2); char *name,
18、*num; /學生姓名、學號。 friend void show( st_n &st) cout n name: n num: st.num; 例 3. 友員函數 (或稱友員全程函數) 第第4章章 類與對象類與對象4.1 類定義與對象聲明類定義與對象聲明4.2 對象的使用對象的使用4.3 對象成員對象成員4.4 友員友員 friend4.5 靜態成員和對象組靜態成員和對象組 織織4.6 模板模板4.7 應用舉例應用舉例class sco public: sco(int i1, int i2) :mat(i1),eng(i2) ; /外部函數void show_all(s
19、t_n &st, sco *p ) show(st); cout n mathematics: mat n english: eng; int mat, eng; /學生數學、英語成績。friend void show_all(st_n &, sco *);第第4章章 類與對象類與對象4.1 類定義與對象聲明類定義與對象聲明4.2 對象的使用對象的使用4.3 對象成員對象成員4.4 友員友員 friend4.5 靜態成員和對象組靜態成員和對象組 織織4.6 模板模板4.7 應用舉例應用舉例void main( ) st_n a(Wang , 123456 ); /創建對象 sc
20、o b(72, 82); /創建對象 b.show_all(a, &b); /打印姓名、學號 /數學、英語成績結果: name: Wang num: 12345 mathematics:72 english: 82注意:定義了兩個類 a,b,且外部友員函數show_all 能訪問私有數據,建立了類與外部函數之間的聯系。第第4章章 類與對象類與對象4.1 類定義與對象聲明類定義與對象聲明4.2 對象的使用對象的使用4.3 對象成員對象成員4.4 友員友員 friend4.5 靜態成員和對象組靜態成員和對象組 織織4.6 模板模板4.7 應用舉例應用舉例幾點注意1. 友員關系不能傳遞: 即你是我的朋友, 他 是你的朋友, 但不一定他是我的朋友.從 另一個角度說, 我愿意和你分享我的秘 密, 但不一定愿意和你的朋友分享我的秘 密.2. 友員關系不是可逆的, 即: 甲是乙的友員, 并不意味著乙是甲的友員. 從另一個角 度說, 我愿意和你分享我的秘密, 但不一 定你愿意和我分享你的秘密 第第4章章 類與對象類與對象4.1 類定義與對象聲明類定義與對象聲明4.2 對象的使用對象的使用4.3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物流與供應鏈管理服務合同
- 2024-2025學年福建省福州市永泰縣三年級(下)期中數學試卷(含答案)
- 吉林省通化市梅河口五中2025屆高三上學期12月月考-生物試題(含答案)
- 特高壓變壓器租賃合同
- 銷售合同終止協議書
- 中醫五臟與六腑
- 2025年中考道法第一輪復習公開課一等獎創新教案七年級上冊第一單元《成長的節拍》
- 2025年度水利安全知識競賽試題及答案(共三套)
- 音樂一年級下冊第六單元 月兒彎彎欣賞 小白船教學設計
- 產后出血的病例討論
- 綜合性學習之對聯-中考語文二輪復習
- GB/T 19845-2005機械振動船舶設備和機械部件的振動試驗要求
- 實驗室生物安全程序文件
- 企業融資方式介紹課件
- 藥品生產監督管理辦法
- 福建省普通高中學生綜合素質學期評價表
- 五年級下冊數學課件 -4.1 用數對確定位置 ︳青島版 (共20張PPT)
- 柏拉圖分析案例
- 二襯帶模注漿施工方案
- 《英語委婉語與忌語》PPT課件.ppt
- 調查問卷設計-課件PPT
評論
0/150
提交評論