




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、C+編程,2,課程目標(biāo),學(xué)習(xí)c+基本知識和技能 要求學(xué)員能正確的理解和運用c+基本知識和技能,3,課程分為如下幾塊,C+單個類的設(shè)計 C+類的繼承 容器和算法 IO流 C+的異常處理 Qt Qt掃雷項目,4,第一部分 c+類的設(shè)計,預(yù)習(xí)檢測 什么是引用? 引用必需要初始化嗎? 定義類的友元函數(shù)的關(guān)鍵字是什么? C+的顯式轉(zhuǎn)換有哪幾種定義? 復(fù)制控制包含那幾個函數(shù)?,5,第一部分 c+概述,C+是由AT /開辟一個存放數(shù)組的存儲空間,返回一個指向該存儲空間的地址. 2)int *a = new int(5); / 作用同上,但是同時將整數(shù)賦值為5 2.開辟數(shù)組空間 一維: int *a = ne
2、w int100;/開辟一個大小為100的整型數(shù)組空間 二維: int(*a)6=new int56; Delete的作用: 調(diào)用對象的析構(gòu)函數(shù), 在釋放對象 1. int *a = new int; delete a; /釋放單個int的空間 2.int *a = new int5; delete a; /釋放int數(shù)組空間,9,第一部分 c+類的設(shè)計,第四節(jié) 類型轉(zhuǎn)換 隱式類型的轉(zhuǎn)換 int a = 1; double b = 0.1 double c = a+b; 指針轉(zhuǎn)換: int a3; int * b = a; 轉(zhuǎn)換為bool 類型 算術(shù)值和指針值都可以轉(zhuǎn)換為 bool 類型。 I
3、nt * a = 0; If(a) cout “a is true”; else cout “a is false”;,10,第一部分 c+類的設(shè)計,C+的顯式轉(zhuǎn)換 static_cast 程序員顯式的強制類型轉(zhuǎn)換 int a = 10; double b = static_cast(a); double c = (double)a; reinterpret_cast:為操作數(shù)的位模式提供較低層次的重新解釋 int b = 1; int a = (int) / C-language-style cast notation,11,第一部分 c+類的設(shè)計,第五節(jié) 友元及static 友元機制: 允
4、許一個類將對其非公有成員的訪問權(quán)授予指定的函數(shù)或類 優(yōu)點: 在實現(xiàn)類之間數(shù)據(jù)共享時,減少系統(tǒng)開銷,提高效率; 缺點:友元函數(shù)破環(huán)了封裝機制,盡量不使用友元函數(shù). 因為友元函數(shù)是類外的函數(shù),所以它的聲明可以放在類的私有段或公有段且沒有區(qū)別??梢灾苯诱{(diào)用友元函數(shù),不需要通過對象或指針. 成員函數(shù)有this指針,而友元函數(shù)沒有this指針。 友元函數(shù)是不能被繼承的,就像父親的朋友未必是兒子的朋友 static函數(shù)和static數(shù)據(jù)成員 非static成員存在于類的對象中, static數(shù)據(jù)成員是獨立于類的對象的, 它是于類相關(guān)聯(lián)的. 通過作用域操作符:直接調(diào)用static成員. static數(shù)據(jù)成員
5、必須在類定義體外部定義一次. 靜態(tài)成員函數(shù)訪問類成員數(shù)據(jù)和類static數(shù)據(jù)成員的區(qū)別。,12,第一部分 c+類的設(shè)計,第六節(jié) 復(fù)制控制 復(fù)制控制: 復(fù)制構(gòu)造函數(shù), 析構(gòu)函數(shù), 賦值操作符. 析構(gòu)函數(shù)在撤銷類對象時自動調(diào)用 class Person public: Person(const string ,13,第一部分 c+類的設(shè)計,第七節(jié) 操作符重載 一般將算術(shù)和關(guān)系操作符定義非成員函數(shù),而將賦值操作符定義為成員操作符。定義為非成員函數(shù)時,通常必須將它們設(shè)置為所操作類的友元 operator+(); operator+=(); operator=(); operator!=(); 重載賦值
6、運算符時應(yīng)返回一個對象。因為賦值運算符的左邊是一個對象,所以重載賦值運算符應(yīng)返回一個類的對象,為了避免不必要的開銷,最好是返回一個類的對象的引用。 重載賦值運算符時必須是類的成員函數(shù)。 復(fù)數(shù)類演示代碼 輸入和輸出操作符 ostream virtual void letOff() cout bio lef off! endl; virtual void move() cout bio move! endl; ; class Animal: public Biology public: void eat() cout animal eat! endl; void letOff() cout ani
7、mal lef off! endl; ;,19,第二部分 c+類的繼承,int main() Animal tiger; tiger.eat(); /函數(shù)的覆蓋 tiger.letOff(); /函數(shù)的重定義 tiger.move(); /函數(shù)的繼承 Biology * bio = 觸發(fā)動態(tài)綁定的兩個條件: 第一,只有指定為虛函數(shù)的成員函數(shù)才能進行動態(tài)綁定 第二,必須通過基類類型的引用或指針進行函數(shù)調(diào)用。 多態(tài)有兩種實現(xiàn)方式是: 一是同一個類中函數(shù)的重載; 二是子類改寫父類中方法的內(nèi)部實現(xiàn)。,20,第二部分 c+類的繼承,派生類到基類的轉(zhuǎn)換 如果有一個派生類型的對象,則可以使用它的地址對基類類
8、型的指針進行賦值或初始化。 基類到派生類的轉(zhuǎn)換: 從基類到派生類的自動轉(zhuǎn)換是不存在的。 class A ; class B: public A ; int main() A * pa = new B; /B * b = pa;/報錯 B * b = static_cast(pa); return 0; ,21,第二部分 c+類的繼承,第二節(jié)派生類構(gòu)造函數(shù) 派生類的構(gòu)造函數(shù)受繼承關(guān)系的影響,每個派生類構(gòu)造函數(shù)除了初始化自己的數(shù)據(jù)成員之外,還要初始化基類。子類的構(gòu)造函數(shù)定義中用以下格式調(diào)用父類的構(gòu)造函數(shù): 子類名:構(gòu)造函數(shù)名(參數(shù)表):父類名(參數(shù)表) class Base public: Bas
9、e(int i =0 ): m_i(i) protected: int m_i; ; class Derive : public Base public: Derive(int i =0, const string ,22,第二部分 c+類的繼承,復(fù)制控制和繼承 class Person public: Person(const string ,23,第二部分 c+類的繼承,class Student: public Person public: Student(const string ,24,第二部分 c+類的繼承,第三節(jié) 派生類的撤銷 對象的撤銷順序與構(gòu)造順序相反:首先運行派生析構(gòu)函數(shù),然后按繼承層次依次向上調(diào)用各基類析構(gòu)函數(shù)。 基類的析構(gòu)函數(shù)必須定義為虛函數(shù),25,第二部分 c+類的繼承,本章總結(jié)
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 機制砂對PVA-ECC力學(xué)、耐熱和收縮性能影響的研究
- 人類文明新形態(tài)及其價值研究
- 面對困難我不怕心理健康課
- 健康用眼預(yù)防近視
- 正確洗手“手”護健康
- 顱骨損傷護理課件
- 《智能網(wǎng)聯(lián)汽車技術(shù)》課件-汽車定位技術(shù)
- 基礎(chǔ)解剖學(xué):人體器官系統(tǒng)概述
- 幼兒園一日保教工作培訓(xùn)
- 預(yù)防欺凌暴力班會課件
- 艾滋病檢測培訓(xùn)試題附答案
- FZ/T 25001-2012工業(yè)用毛氈
- 如何提取關(guān)鍵詞
- 乙二酸二甲酯(草酸二甲酯;草酸甲酯)的理化性質(zhì)及危險特性表
- 一二年級-數(shù)獨游戲課件
- 問題解決型護理品管圈QCC成果匯報之提高痰標(biāo)本采集合格率
- 物業(yè)公司戰(zhàn)略合作協(xié)議范本
- 電網(wǎng)公司項目管理標(biāo)準(zhǔn)手冊
- 衛(wèi)生值日表格源碼文件可編輯可修改
- ASTM B344-20 電加熱元件用拉制或軋制鎳鉻及鎳鉻鐵合金標(biāo)準(zhǔn)規(guī)范
- 《石油化工企業(yè)儲運罐區(qū)罐頂油氣連通安全技術(shù)要求》
評論
0/150
提交評論