freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

面向對象程序設計c語言三ppt(已修改)

2025-01-31 10:40 本頁面
 

【正文】  李愛華 程磊 編著清華大學出版社同名教材配套電子教案2022年 2月面向對象程序設計( C++語言) 3第二部分 面向對象的程序設計 第 3章 類和對象 (一 )第 4章 類和對象 (二 )第 5章 繼承和派生第 6章 虛函數(shù)與多態(tài)性第 7章 運算符重載第 8章 模板第 9章 標準模板庫 STL第 10章 C++語言的輸入和輸出2第 5章 繼承和派生本章重點:v 繼承與派生的概念;v 派生類的構造函數(shù)和析構函數(shù)的執(zhí)行順序與規(guī)則;v 多繼承的聲明與實現(xiàn);v 基類成員訪問原則;v 賦值兼容性;v 虛基類的概念 ;3 v 繼承 是面向對象程序設計中重要的特性。v 繼承主要是指在己有類的或稱為 基類 的基礎上創(chuàng)建新類的過程,這個新類就是 派生類 。v 派生類自動的包含了基類的成員,包括所有的數(shù)據(jù)和操作,而且它還可以增加自身新的成員4在 C++中,一個派生類可以從一個基類派生,也可以從多個基類派生,從一個基類派生的稱為單繼承,如圖 。圖 概念。圖 單繼承 圖 類的層次樹型結構圖 5v 一個派生類從兩個或多個基類派生則稱為多繼承,如圖 ,它使一個類可以融合了多個類的特征,例如在現(xiàn)實生活中的在職研究生的概念,他是在職人員,又是研究生,如圖 ,從圖中還可以看到一個有趣的現(xiàn)象,在職人員類本身是單繼承的基類,教師和職員都是它的具體子類,而其又是在職研究生的多重基類,提供在職人員的基本特征。圖 多繼承 圖 單繼承與多繼承 6繼承機制除了支持軟件復用外,還具備以下三個作用:v 對事物進行分類。v 支持軟件的增量開發(fā)。v 對概念進行組合。 7v 前面的知識中,我們學習了如何定義類和如何實現(xiàn)類的抽象與封裝,通常在不同的類中,數(shù)據(jù)成員和函數(shù)成員都是不同的,但對于某些特定的問題,有時候兩個類的基本或大部分內容是相同的,在圖 ,我們利用現(xiàn)有知識可以首先聲明了一類 來描述學生這一基本概念 ,如下:classStudent{private:intnumber。charname[20]。public:Student(){number=0。name[0]=’\0’。}VoidSetValue(intn,char*s1){ number=n。Strcpy(name,s1)。}voidPrint(){cout”Number:”numberendl。cout”Name:”nameendl。}};8v 如果現(xiàn)在需要一個新類 UGStudent來描述大學生概念,除上述的基本成員外,還需要用到年齡、年級等信息,我們可以如下定義此類:classUGStudent{private:intnumber。charname[20]。intage。intgrade。public:voidPrint(){cout”Number:”numberendl。cout”Name:”nameendl。cout”Age:”ageendl。cout”Grade:”gradeendl。}};9派生類的聲明 v 在 C++中類的繼承關系可以用如下語法表示:class派生類名 :繼承方式 基類名{派生類成員聲明}。v 需要注意的是,基類的構造函數(shù)和析構函數(shù)不能被派生類繼承,派生類若要初始化基類的數(shù)據(jù)成員必須在構造函數(shù)中初始化。10【例 】用繼承重新定義 UGStudent類。 /**/classUGStudent:publicStudent{private:intage。intgrade。public:UGStudent(){SetValue(0,””)。age=0。grade=0。}UGStudent(intn,char*s1,inta,intg){SetValue(n,s1)。age=a。grade=g。}voidPrintExtra(){cout”Age:”ageendl。cout”Grade:”gradeendl。}}。11用主函數(shù)進行測試 :intmain(){UGStudentst1(100,”wang”,18,1)。()。 //調用基類的函數(shù)()。 //調用派生類新定義的函數(shù)return0。} 12Number:100Name:wangAge:18Grade:1程序的 運行結果為:13圖 基類與派生類中的成員 14派生類的訪問屬性 v 類的成員可以分為 public( 公有)、 protected( 保護)和 private( 私有)三種訪問權限。v 類的非靜態(tài)成員函數(shù)可以訪問類中的所有成員,但是通過類的 “ 對象 .成員 ” 方式(在類的作用域之外),則只能訪問該類的公有成員。v 類的繼承方式有公有繼承( public)、 保護繼承( protected) 和私有繼承( private) 三種。v 不同的繼承方式,導致原有基類成員在派生類中的訪問屬性也有所不同。 15表 基類成員的權限繼承方式public protected privatepublic 在派生類中為 public 在派生類中為 protected 在派生類中為 private派生類的成員函數(shù)和類的作用域之外,都可以直接訪問派生類的成員函數(shù)可以直接訪問派生類的成員函數(shù)可以直接訪問protected 在派生類中為 protected 在派生類中為 protected 在派生類中為 private派生類的成員函數(shù)可以直接訪問派生類的成員函數(shù)可以直接訪問派生類的成員函數(shù)可以直接訪問private 在派生類中被隱藏,無法訪問在派生類中被隱藏,無法訪問在派生類中被隱藏,無法訪問任何方式都不能直接訪問,但可以通過基類的public、 protected成員函數(shù)間接訪問任何方式都不能直接訪問,但可以通過基類的public、 protected成員函數(shù)間接訪問訪問任何方式都不能直接訪問,但可以通過基類的public、 protected成員函數(shù)間接訪問訪問16v 對于靜態(tài)成員來說,與普通成員函數(shù)組合,將產生以下兩種情況:(1)派生類中靜態(tài)函數(shù)對基類中靜態(tài)成員的訪問。(2)派生類的普通成員函數(shù)要訪問基類中的靜態(tài)成員。v 靜態(tài)成員的訪問控制變化完全遵循表 ,這兩種情況和派生類中普通成員函數(shù)訪問基類中普通成員沒有區(qū)別。 17【例 】公有繼承時的訪問控制權限。 /**/includeiostreamusingnamespacestd。classBase{private: inta。voidfun1(){coutaendl。}protected:intb。voidfun2(){coutcendl。}public:intc。voidfun3(){coutbendl。}voidseta(inti) //修改私有成員 a的值{a=i。}int geta() //返回私有成員 a的值{returna。}Base(inti,intj,intk) //基類的構造函數(shù){a=i。b=j。c=k。}}。18classSub:publicBase{private:intd。public:Sub(inti,intj,intk,intm):Base(i,j,k)//派生類構造函數(shù){d=m。}voidtest(){//coutaendl。 //錯誤,無法訪問基類的私有成員coutbendl。 //正確,可以訪問基類的保護成員coutcendl。 //正確,可以訪問基類的公有成員//fun1()。 //錯誤,無法訪問基類的私有成員fun2()。 //正確,可以訪問基類的保護成員fun3()。 //正確,可以訪問基類的公有成員seta(10)。 //正確,間接訪問基類成員 acoutdendl。 //正確,可以訪問派生類的私有成員}}。19intmain(){Baseb1(5,6,7)。//cout //錯誤,無法訪問對象的私有成員//cout。 //錯誤,無法訪問對象的保護成員coutendl。 //正確,可以訪問對象的公有成員cout()endl。 //正確,間接訪問對象的私有成員 aSubs1(11,15,19,22)。()。 //正確,可以訪問對象的公有成員=200。 //正確,可以訪問對象的公有成員()。 //正確,可以訪問對象的公有成員return0。}20派生類的構造函數(shù)和析構函數(shù) v 在繼承機制中,基類的構造函數(shù)和析構函數(shù)是不能繼承的。v 派生類的構造函數(shù)負責對來自基類數(shù)據(jù)成員和新增加的數(shù)據(jù)成員進行初始化。v 所以在執(zhí)行派生類的構造函數(shù)時,需要調用基類的構造函數(shù)。21派生類構造函數(shù)和析構函數(shù)的執(zhí)行順序 v 通過繼承,派生類得到了基類的成員,因此派生類對象中既包括自身類的數(shù)據(jù)成員還包括通過繼承從基類中得到的數(shù)據(jù)成員。v 在派生類中還可用其他類來定義對象作為成員,又涉及到派生類中對象成員的構造問題,則當用派生類定義對象后,派生類對象、對象成員、基類對象的構造函數(shù)的調用順序如下:216。 基類的構造函數(shù)。216。 對象成員的構造函數(shù)(如果有的話),有多個時按聲明的順序。216。 派生類的構造函數(shù)。22【例 】派生類構造實例。 /**/includeiostreamusingnamespacestd。classB{public:B(){cout”ConstructB”endl}}。classC{public:C(){cout”ConstructC”endl}}。classD:publicB{private:Cc1。public:D(){cout”ConstructD”endl}}。intmain(){ Dd1。return0。}23constructBConstructCConstructD程序的 運行結果為:24v 析構函數(shù)與構造函數(shù)執(zhí)行的順相反,將按如下順序執(zhí)行:(1)派生類的構造函數(shù);(2)對象成員的構造函數(shù)(如果有的話),有多個時與聲明的順序相反;(3)基類對象的析構函數(shù)。25對例 ,為每一個類添加析構函數(shù),然后再進行測試。 classB{public:B(){cout”ConstructB”endl}~B(){cout”DeconstructB”endl}}。classC{public:C(){cout”ConstructC”endl}~C(){cout”DeconstructC”endl}}。classD:publicB{private:Cc1。public:D(){cout”ConstructD”endl}~D(){cout”DeconstructD”endl}}。intmain(){ Dd1。return0。}26ConstructBConstructCConstructDDestructDDestructCDestructB程序的 運行結果為:27派生類構造函數(shù)和析構函數(shù)的構造規(guī)則 v 在 C++中,類的機制非常清楚、嚴格地劃分了各自的權限和責任。是哪個類的操作,必須由那個類調用;v 是誰的對象,就必須由該類的構造函數(shù)來完成對其構造的工作。v 因此,對派生類中基類成員的構造,必須由基類構造函數(shù)完成,而不能由派生類的構造函數(shù)越權去構造。v 派生類構造函數(shù)主要負責調用基類構造函數(shù)并提供基類構造函數(shù)所需的參數(shù)。28下面分兩種情況討論派生類對象的構造: 1.如基類中定義了默認構造函數(shù),且該默認構造函數(shù)能夠完成派生類對象中基類成員的構造,則派生類構造函數(shù)無需顯式調用基類構造函數(shù),直接調用基類的默認構造函數(shù)即可,這是一種較為簡單的情況,例 ,下面的例子也可以說明這一點。29【例 】分析下面程序的輸出結果。 /**/includeiostreamusingnamespacestd。classBase{public:Base(){a=0。}Base(inti){a=i。}protected:inta。}。classDerived:publicBase{public:Derived(){b=0。}Derived(inti){b=i}voidPrint(){couta=a,b=b
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1