c教程-類的設(shè)計(jì)和繼承.ppt_第1頁(yè)
c教程-類的設(shè)計(jì)和繼承.ppt_第2頁(yè)
c教程-類的設(shè)計(jì)和繼承.ppt_第3頁(yè)
c教程-類的設(shè)計(jì)和繼承.ppt_第4頁(yè)
c教程-類的設(shè)計(jì)和繼承.ppt_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、C+編程,2,課程目標(biāo),學(xué)習(xí)c+基本知識(shí)和技能 要求學(xué)員能正確的理解和運(yùn)用c+基本知識(shí)和技能,3,課程分為如下幾塊,C+單個(gè)類的設(shè)計(jì) C+類的繼承 容器和算法 IO流 C+的異常處理 Qt Qt掃雷項(xiàng)目,4,第一部分 c+類的設(shè)計(jì),預(yù)習(xí)檢測(cè) 什么是引用? 引用必需要初始化嗎? 定義類的友元函數(shù)的關(guān)鍵字是什么? C+的顯式轉(zhuǎn)換有哪幾種定義? 復(fù)制控制包含那幾個(gè)函數(shù)?,5,第一部分 c+概述,C+是由AT /開(kāi)辟一個(gè)存放數(shù)組的存儲(chǔ)空間,返回一個(gè)指向該存儲(chǔ)空間的地址. 2)int *a = new int(5); / 作用同上,但是同時(shí)將整數(shù)賦值為5 2.開(kāi)辟數(shù)組空間 一維: int *a = ne

2、w int100;/開(kāi)辟一個(gè)大小為100的整型數(shù)組空間 二維: int(*a)6=new int56; Delete的作用: 調(diào)用對(duì)象的析構(gòu)函數(shù), 在釋放對(duì)象 1. int *a = new int; delete a; /釋放單個(gè)int的空間 2.int *a = new int5; delete a; /釋放int數(shù)組空間,9,第一部分 c+類的設(shè)計(jì),第四節(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è)計(jì),C+的顯式轉(zhuǎn)換 static_cast 程序員顯式的強(qiáng)制類型轉(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è)計(jì),第五節(jié) 友元及static 友元機(jī)制: 允

4、許一個(gè)類將對(duì)其非公有成員的訪問(wèn)權(quán)授予指定的函數(shù)或類 優(yōu)點(diǎn): 在實(shí)現(xiàn)類之間數(shù)據(jù)共享時(shí),減少系統(tǒng)開(kāi)銷,提高效率; 缺點(diǎn):友元函數(shù)破環(huán)了封裝機(jī)制,盡量不使用友元函數(shù). 因?yàn)橛言瘮?shù)是類外的函數(shù),所以它的聲明可以放在類的私有段或公有段且沒(méi)有區(qū)別??梢灾苯诱{(diào)用友元函數(shù),不需要通過(guò)對(duì)象或指針. 成員函數(shù)有this指針,而友元函數(shù)沒(méi)有this指針。 友元函數(shù)是不能被繼承的,就像父親的朋友未必是兒子的朋友 static函數(shù)和static數(shù)據(jù)成員 非static成員存在于類的對(duì)象中, static數(shù)據(jù)成員是獨(dú)立于類的對(duì)象的, 它是于類相關(guān)聯(lián)的. 通過(guò)作用域操作符:直接調(diào)用static成員. static數(shù)據(jù)成員

5、必須在類定義體外部定義一次. 靜態(tài)成員函數(shù)訪問(wèn)類成員數(shù)據(jù)和類static數(shù)據(jù)成員的區(qū)別。,12,第一部分 c+類的設(shè)計(jì),第六節(jié) 復(fù)制控制 復(fù)制控制: 復(fù)制構(gòu)造函數(shù), 析構(gòu)函數(shù), 賦值操作符. 析構(gòu)函數(shù)在撤銷類對(duì)象時(shí)自動(dòng)調(diào)用 class Person public: Person(const string ,13,第一部分 c+類的設(shè)計(jì),第七節(jié) 操作符重載 一般將算術(shù)和關(guān)系操作符定義非成員函數(shù),而將賦值操作符定義為成員操作符。定義為非成員函數(shù)時(shí),通常必須將它們?cè)O(shè)置為所操作類的友元 operator+(); operator+=(); operator=(); operator!=(); 重載賦值

6、運(yùn)算符時(shí)應(yīng)返回一個(gè)對(duì)象。因?yàn)橘x值運(yùn)算符的左邊是一個(gè)對(duì)象,所以重載賦值運(yùn)算符應(yīng)返回一個(gè)類的對(duì)象,為了避免不必要的開(kāi)銷,最好是返回一個(gè)類的對(duì)象的引用。 重載賦值運(yùn)算符時(shí)必須是類的成員函數(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ā)動(dòng)態(tài)綁定的兩個(gè)條件: 第一,只有指定為虛函數(shù)的成員函數(shù)才能進(jìn)行動(dòng)態(tài)綁定 第二,必須通過(guò)基類類型的引用或指針進(jìn)行函數(shù)調(diào)用。 多態(tài)有兩種實(shí)現(xiàn)方式是: 一是同一個(gè)類中函數(shù)的重載; 二是子類改寫(xiě)父類中方法的內(nèi)部實(shí)現(xiàn)。,20,第二部分 c+類的繼承,派生類到基類的轉(zhuǎn)換 如果有一個(gè)派生類型的對(duì)象,則可以使用它的地址對(duì)基類類

8、型的指針進(jìn)行賦值或初始化。 基類到派生類的轉(zhuǎn)換: 從基類到派生類的自動(dòng)轉(zhuǎn)換是不存在的。 class A ; class B: public A ; int main() A * pa = new B; /B * b = pa;/報(bào)錯(cuò) B * b = static_cast(pa); return 0; ,21,第二部分 c+類的繼承,第二節(jié)派生類構(gòu)造函數(shù) 派生類的構(gòu)造函數(shù)受繼承關(guān)系的影響,每個(gè)派生類構(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é) 派生類的撤銷 對(duì)象的撤銷順序與構(gòu)造順序相反:首先運(yùn)行派生析構(gòu)函數(shù),然后按繼承層次依次向上調(diào)用各基類析構(gòu)函數(shù)。 基類的析構(gòu)函數(shù)必須定義為虛函數(shù),25,第二部分 c+類的繼承,本章總結(jié)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論