怎樣使用類和對象圖文_第1頁
怎樣使用類和對象圖文_第2頁
怎樣使用類和對象圖文_第3頁
怎樣使用類和對象圖文_第4頁
怎樣使用類和對象圖文_第5頁
已閱讀5頁,還剩8頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1 淮海工學院計算機工程學院 楊世通 2014-2015-1學期 *C+程序設計 G計算機141第第9 9章章 怎樣使用類和對象怎樣使用類和對象9.1 利用構造函數對類對象進行初始化9.2 析構函數9.3 調用構造函數和析構函數的順序9.4 對象數組9.5 對象指針9.6 共用數據的保護9.7 對象的動態建立和釋放9.8 對象的賦值和復制9.9 靜態成員9.10 友元9.11 類模板小結練習、作業及實驗2 淮海工學院計算機工程學院 楊世通 2014-2015-1學期 *C+程序設計 G計算機1419.9 9.9 靜態成員靜態成員 類是對象的藍圖,類的成員有: 成員變量每個對象單獨的一份數據成員

2、 成員函數所有對象只有一份成員函數代碼 一般類的成員函數都有一個隱式的指針參數this,this指針指向對象本身,這樣通過this指針就可以訪問每個對象自己的成員變量。 但有時候為一個類的所有對象提供共有的數據成員副本,比在類的每個對象中維護單獨的副本,可以更加有效合理地利用內存并方便編程。 這是一種特殊的成員變量靜態變量。 3 淮海工學院計算機工程學院 楊世通 2014-2015-1學期 *C+程序設計 G計算機1419.9.1 9.9.1 靜態成員變量靜態成員變量1、概念: 靜態成員變量屬于類,該類的所有對象共享一份。 (屬于類的全局變量)2、聲明: 在成員前加static標記3、初始化:

3、 靜態成員變量只能被初始化一次,必須在類外的CPP源文件中初始化,不能放在接口文件(頭文件*.h)中。 類型 類名:變量名=初值;4、引用: 可以通過對象名或類名來引用。4 淮海工學院計算機工程學院 楊世通 2014-2015-1學期 *C+程序設計 G計算機1419.9.1 9.9.1 靜態成員變量靜態成員變量例: CAD系統中點對象的個數(計數)、及每個對象序號。1、可以考慮設置一全局變量counter(初始化為0),在構造函數中counter+,在析構函數中counter-。 但使用全局變量會引起數據的依賴性相關性問題(數據耦合); 全局變量容易沖突; 無法向維護人員傳達設計人員的設計思

4、路。2、在點類中設一counter靜態變量及一私有成員變量id。(更好的解決方案)5 淮海工學院計算機工程學院 楊世通 2014-2015-1學期 *C+程序設計 G計算機1419.9.2 9.9.2 靜態成員函數靜態成員函數1、概念: 靜態數據成員屬于類,目的主要是為了處理類的靜態成員變量。 由于靜態成員函數邏輯上不屬于對象,所以其參數表中無默認的this指針,所以無法用默認方法處理某個對象非靜態成員變量,必須指明對象名。 靜態成員函數只能訪問它的參數、類的靜態成員和全局變量。2、聲明: 在成員函數前加static標記3、引用: 可以通過對象名或類名來引用。6 淮海工學院計算機工程學院 楊世

5、通 2014-2015-1學期 *C+程序設計 G計算機1419.10 9.10 友元(友元(friend)friend)1、概念: 類中的成員變量一般是私有或保護的,是被封閉起來的,不允許從外部直接訪問。封裝是一種很好的保護數據的方法,但有些時候也給數據的訪問帶來了困難和額外的開銷。 但可以對朋友提問便利的訪問,不過要嚴格控制,盡量不使用。 friend可以是函數,也可以是類。 注意友元函數和友元類并不是類的成員,友元函數參數表中沒有隱藏傳遞的this指針。7 淮海工學院計算機工程學院 楊世通 2014-2015-1學期 *C+程序設計 G計算機1419.10 9.10 友元(友元(frie

6、nd)friend) 面向對象程序設計的一個基本原則是封裝性和信息隱藏,而友元卻可以訪問其它類中的private、protected成員,這是對封裝原則的一種破壞;但是有助于數據共享,可以提高程序的的效率。 在使用友元時一定要注意它的副作用,盡量限制使用。只有在使用了友元之間可以使程序更精練,并較大速度地提高程序的效率時才使用。 數據共享與信息隱藏之間要選擇一個恰當的平衡點。 效率和原則/規范之間的一種折衷。8 淮海工學院計算機工程學院 楊世通 2014-2015-1學期 *C+程序設計 G計算機1419.11 9.11 類模板類模板 普通類是對象的抽象,對象是類的實例。 類模板是在這個基礎上

7、對普通類的又一層抽象,是抽象數據類型,一種抽象地處理問題的機制,類似于函數模板的思想,是C+的一種有力的代碼重用工具。適用于功能相同,數據類型不同,但解決問題的算法相同的場合。類模板是包含類型參數的類參數化的類,是一組相似類的抽象,類是類模板的實例,類模板是類的抽象。 思想:對數據類型不同的對象使用相同的算法,只需編寫一次算法代碼,在使用時再指定算法應用指定的數據類型即可。 學習的目的: 進一步學習抽象與重用的思想; 為正確學習和使用STL(標準模板庫)打下基礎(C+的高級編程); 抽象的思想,要突出的重點是與數據類型無關的解決問題的算法。9 淮海工學院計算機工程學院 楊世通 2014-201

8、5-1學期 *C+程序設計 G計算機1419.11 9.11 類模板類模板類模板的聲明template class 類名 ;typename關鍵字也可以使用class,表示的是抽象虛擬的數據類型,還可以把要傳給模板的常量也放進虛擬類型中。10 淮海工學院計算機工程學院 楊世通 2014-2015-1學期 *C+程序設計 G計算機1419.11 9.11 類模板類模板成員函數的定義template class 類名:函數名(參數表)參數表中可以使用虛擬的數據類型T1、T2 注意:目前大部分C+編譯器不支持類模板的定義與實現相分離,即只能放在同一文件中。VC+6.0也不支持,所以使用類視圖時支持不

9、好,但編譯與執行沒有問題。11 淮海工學院計算機工程學院 楊世通 2014-2015-1學期 *C+程序設計 G計算機1419.11 9.11 類模板類模板模板類對象的定義template class 類名 對象名(初始值);應用舉例: 最多含有10個元素的順序表抽象數據類型的實現,要求可以實現遍歷(顯示)、插入、刪除、排序基本操作。12 淮海工學院計算機工程學院 楊世通 2014-2015-1學期 *C+程序設計 G計算機141練習、作業及實驗(練習、作業及實驗(1 1)一、練習書后練習 課后有條件的同學盡量將書中本章的所有程序進行輸入運行,多閱讀程序,在弄明白的基礎上對程序進行一定的修改,并多練習編寫程序。二、書面作業0、類的構造函數有幾種,分別如何定義及在什么場合下會被調用? 1、類的實例中,成員變量和成員函數各保存幾份備份? 2、簡述模板類的思想及模板類的聲明、定義與使用。 13 淮海工學院計算機工程學院 楊世通 2014-2015-1學期 *C+程序設計 G計算機141 練習、作業及實驗練習、作業及實驗(2)(2)三、實驗1、目的: (1)進一步熟悉和掌握使用面向對象思想; (2)掌握類的靜態成員

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論