




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第4章面向對象程序設計4.1類的定義和實例化
面向對象的程序設計方法則是把數據及處理這些數據的函數封裝在一個類中,而使用類的實例則稱為對象。
在面向對象程序設計中,將事物的特征和行為組織在一起,便形成了類。
在類中,事物的特征被描述為數據成員,行為被描述為方法。
與面向過程相比,面向對象程序設計具有以下優點:第一,程序的可維護性好,易于閱讀和理解;第二,程序的易修改性好,可以很容易地修改、添加或刪除程序的屬性;第三,重用性好,可以將類和對象保存起來,隨時應用到程序中,無需做什么修改。1.類的聲明
類是進行封裝和數據隱藏的工具,通過類把邏輯上相關的實體聯系起來,并可從外部訪問這些實體。
聲明一個類,需要使用關鍵字class,其后是類名,類名后是一個“{”,而后是數據成員和方法,結尾是“}”和分號。2.對象的聲明和實例化
對象是類的實例化。在聲明一個類時,并沒有為其分配內存空間,只有在實例化一個對象時,才為對象分配空間。
聲明一個對象和聲明一個整型變量類似。
在定義一個類的對象之后,就可以通過對象訪問類的成員了。
在對象之后使用“.”運算符訪問類成員。4.2類成員的保護
在類的聲明時,類的成員(數據和方法)具有安全級別。
常用的安全級別有public、private、protected。
默認情況下,類的成員為私有的(private),私有成員只能在類本身的方法內訪問,類的對象不能夠訪問私有成員,并且私有成員不能夠被派生類繼承。
公有成員(public)能夠被類的所有對象訪問,能夠被派生類繼承。
保護成員(protected)不能夠被對象訪問,但能夠被派生類繼承。
在類外部不能訪問私有成員和保護成員,只能訪問公有成員。4.3構造函數的定義及調用
為了進行初始化工作,C++提供了一個特殊的成員函數—構造函數(constructor)。
構造函數是一個與類名相同的方法,可以根據需要設置參數,但不具有返回值,甚至空值也不行。
如果在聲明類時,沒有提供構造函數,編譯器會提供一個默認的構造函數,默認構造函數沒有參數,不進行任何操作。
在開發程序時,用戶可以自己定義一個默認的構造函數,只要構造函數沒有任何參數就可以了。
編譯器除了提供默認的構造函數外,還提供了默認的復制構造函數。
在一個函數中,按值傳遞一個對象或是將對象作為函數的返回值,均會調用類的復制構造函數。
所有的復制構造函數均只有一個參數,即該類的對象的引用。
因為復制構造函數的目的是生成一個對象的拷貝,所以參數是類的對象的常量引用,即在復制構造函數中不允許修改參數。
當按值傳遞一個對象作為函數參數或者函數返回一個對象時,編譯器將調用復制構造函數重新構造一個對象。
總的來說,構造函數的定義和其他方法的定義相同,但需要注意以下幾點。(1)構造函數不能指定返回類型和返回值。
(2)一個類可以有多個構造函數,如果沒有定義構造函數,編譯器會自動為類創建一個默認的構造函數。
(3)構造函數可以沒有參數,也可以有多個參數,多個構造函數之間就是靠參數的個數和類型來區分的。4.4析構函數的定義及調用過程分析
析構函數是與構造函數是相對的,它是在對象被撤銷后清除并釋放所分配的內存。
析構函數與類同名,只是前面有一個“~”號。
析構函數沒有返回值,也沒有參數。
如果對象是在棧中被創建的,那么在對象失去作用域時,系統會自動調用其析構函數來釋放對象占用的內存。4.5類的繼承4.5.1單繼承
面向對象的最大特點是實現了繼承。
開發人員能夠根據已有類派生一個新類,新類繼承了父類所有公有(public)和受保護(protected)的數據成員和方法。
類的繼承是指派生類可以全部或者部分繼承基類的特征,同時加入所需要的新特征和功能。在派生一個新類時,使用class關鍵字,其后是類名稱、冒號、訪問限定符(public、private、protected)、基類名稱。在C++中,共有3種訪問限定符,如下。訪問限定符public訪問限定符protected訪問限定符private4.5.2多繼承
多繼承是指派生類有多個基類,這個派生類繼承了多個特性,這些特性來自不相關的基類。
多繼承的語法為:class類名稱:訪問限定符1基類1名稱,訪問限定符2基類2名稱,……
在多繼承中,派生類繼承了多個基類的特征,每個基類都由一個訪問限定符來控制其成員在派生類的訪問權限。
多繼承使程序重用性得到更大的發揮,可以通過已有的多個不同基類來生成需要的新類。4.5.3虛繼承
采用多重繼承會帶來許多問題。
用virtual關鍵字實現的繼承叫虛繼承,當進行虛繼承時,編譯器會通過指針對其進行處理,使其只能產生一個基類子對象,這樣在編譯器就不會產生錯誤。
虛繼承的語法為:class類名稱:virtual訪問限定符基類名稱4.6為類定義內聯方法
在C++中,可以編寫像內聯函數一樣的內聯方法,只需要在方法返回值前添加inline關鍵字。4.7定義靜態成員數據和靜態方法
在C++中可以定義靜態成員數據。
所謂靜態成員數據是指其數據屬于類,通過類名就可以訪問成員數據。
在聲明類成員數據時,只要在類型前添加static關鍵字,該成員數據就變為靜態成員數據。
靜態成員數據被對象所共有,無論定義多少個對象,內存中的靜態成員只有一個。
因此,當一個對象修改了靜態成員數據,另一個對象在訪問靜態成員數據時,也會發生變化。
靜態方法與靜態成員數據一樣,可以由類直接調用。
聲明靜態方法與聲明普通方法相似,只是在方法返回值類型前添加static關鍵字。4.8定義友元類和友元函數C++中提供了友元類,在類A中將類B聲明為一個友元類,那么在類B中就可以訪問類A中的私有數據和方法了。4.9const方法
在開發程序時
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 水果類建設管理制度
- 土建項目部管理制度
- 洗衣廠品質管理制度
- 均熱爐設備管理制度
- 村應急物資管理制度
- 推行項目化管理制度
- 合金廠配方管理制度
- 3.1大洲和大洋課件-七年級地理人教版上冊
- 廣東省深圳市2024-2025學年高一下學期期中考試語文
- 2025年散控制系統項目創業計劃書
- Vue.js前端開發實戰(第2版)全套完整教學課件
- 2022-2023學年福建省廈門市數學五年級第二學期期末學業質量監測試題含答案
- 父親節:感恩父親的日子
- 現代物流管理(第三版-錢廷仙)課件1.物流成本構成
- 2023年蕪湖一中高一自主招生考試試題數學
- 天津理工大學-PPT 答辯3
- 中心靜脈導管護理
- 江蘇省南京市聯合體2022-2023八年級初二下學期期中英語試卷+答案
- 事業單位崗位職數情況表
- 糖尿病的外周血管病變和處置培訓課件
- Ф9.52銅管表冷器計算書
評論
0/150
提交評論