面向?qū)ο缶幊蘝第1頁
面向?qū)ο缶幊蘝第2頁
面向?qū)ο缶幊蘝第3頁
面向?qū)ο缶幊蘝第4頁
面向?qū)ο缶幊蘝第5頁
已閱讀5頁,還剩152頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

面向?qū)ο缶幊痰谝豁?,共一百五十七頁,編輯?023年,星期五授課教師:郝應(yīng)光郵件地址:h_lionstar@126.com2第二頁,共一百五十七頁,編輯于2023年,星期五3課程考核及成績構(gòu)成本課程的成績由期末考試和平時(shí)作業(yè)2部分構(gòu)成平時(shí)成績由:期末大作業(yè)+平時(shí)隨堂作業(yè)構(gòu)成具體比例待定第三頁,共一百五十七頁,編輯于2023年,星期五4主要內(nèi)容面向?qū)ο蠹夹g(shù)C++語法概要(6)MFC框架基礎(chǔ)詳解(15)MFC文檔/視圖結(jié)構(gòu)詳解(9)幾個(gè)應(yīng)用程序開發(fā)實(shí)例(6)VisualC++應(yīng)用程序設(shè)計(jì)(12)多線程程序設(shè)計(jì)(3)TCP/IP網(wǎng)絡(luò)程序設(shè)計(jì)(3)動態(tài)連接庫程序設(shè)計(jì)(3)數(shù)據(jù)庫程序設(shè)計(jì)(3)第四頁,共一百五十七頁,編輯于2023年,星期五5第一部分面向?qū)ο蠹夹g(shù)面向?qū)ο蟾拍頤ML第五頁,共一百五十七頁,編輯于2023年,星期五6第二部分C++語法概要類和對象靜態(tài)數(shù)據(jù)成員及成員函數(shù)對象與指針操作符重載和友員繼承多態(tài)性第六頁,共一百五十七頁,編輯于2023年,星期五7第三部分MFC框架基礎(chǔ)VisualC++集成開發(fā)環(huán)境簡介Windows操作系統(tǒng)下的應(yīng)用程序(SDK、MFC)用Appwizard開發(fā)一個(gè)MFC程序事件處理、映射模式及滾動視圖GDI、顏色及字體對話框及控件ActiveX及IE公用控件位圖第七頁,共一百五十七頁,編輯于2023年,星期五第四部分MFC文檔視圖結(jié)構(gòu)菜單、鍵盤及命令處理工具欄及狀態(tài)欄文檔和視圖分離SDI及MDI文檔的讀寫打印及打印予覽拆分窗口及多視圖8第八頁,共一百五十七頁,編輯于2023年,星期五9第五部分MFC程序設(shè)計(jì)的其他方面多線程程序設(shè)計(jì)數(shù)據(jù)庫程序設(shè)計(jì)動態(tài)連接庫程序設(shè)計(jì)TCP/IP網(wǎng)絡(luò)程序設(shè)計(jì)第九頁,共一百五十七頁,編輯于2023年,星期五10主要參考書面向?qū)ο蠼Ec設(shè)計(jì),Rumbaugh,電力出版社面向?qū)ο蠓治雠c設(shè)計(jì),GradyBooch,機(jī)械工業(yè)出版社ThinkinginC++,BruceEckelC++Primer,StanleyBLippman,中國電力出版社C++語言及其程序設(shè)計(jì)教程,張國峰,電子工業(yè)出版社深入淺出MFC,2Ed,侯俊杰(侯杰),松崗。VisualC++技術(shù)內(nèi)幕,Microsoft,北京希望電子出版社第十頁,共一百五十七頁,編輯于2023年,星期五11主要網(wǎng)絡(luò)資源(microsoft)(世界最大開源代碼庫)第十一頁,共一百五十七頁,編輯于2023年,星期五第一部分面向?qū)ο蠹夹g(shù)12第十二頁,共一百五十七頁,編輯于2023年,星期五軟件開發(fā)軟件開發(fā)的過程就是程序員對客觀世界問題域形式化的過程第十三頁,共一百五十七頁,編輯于2023年,星期五計(jì)算機(jī)開發(fā)語言機(jī)器語言、匯編語言、高級語言,高級語言可能有幾千種計(jì)算機(jī)語言都是某種程度的形式語言第十四頁,共一百五十七頁,編輯于2023年,星期五計(jì)算機(jī)高級語言的歷史由美國科學(xué)家巴科斯設(shè)計(jì),1956年在IBM計(jì)算機(jī)上實(shí)現(xiàn)的FORTRAN。70年代以來的PASCAL80年代,C語言80年代后期,C++90年代以來,語言要OO而且Visual,更要Web,Java快速推廣。第十五頁,共一百五十七頁,編輯于2023年,星期五PO方法:現(xiàn)實(shí)世界→流程圖(變量,函數(shù))→PO語言→執(zhí)行求解OO方法:現(xiàn)實(shí)世界→類圖(對象,方法)→OO語言→執(zhí)行求解OO作為一種思想及編程語言,為軟件開發(fā)的整個(gè)過程:分析、設(shè)計(jì)到coding,提供了一個(gè)完整解決方案。從PO到OO第十六頁,共一百五十七頁,編輯于2023年,星期五17面向過程思想問題域(Domain)以問題域的系統(tǒng)流程為中心分析Sub1Sub2Subn….各子流程實(shí)現(xiàn)----函數(shù)化Func1Func2Funcn….根據(jù)系統(tǒng)的流程組建軟件,通過函數(shù)的調(diào)用實(shí)現(xiàn)第十七頁,共一百五十七頁,編輯于2023年,星期五18面向?qū)ο笏枷雴栴}域(Domain)以問題域中的事物為中心思考問題Object1Object2Objectn….對象歸類----抽象化Class1Class2Classn….類實(shí)例化:定義對象,構(gòu)建系統(tǒng),形成解決方案第十八頁,共一百五十七頁,編輯于2023年,星期五19面向?qū)ο蟮幕靖拍頒oad和Yourdon給出了一個(gè)定義:“面向?qū)ο?對象+類+繼承+通信”。如果一個(gè)軟件系統(tǒng)是使用這樣4個(gè)概念設(shè)計(jì)和實(shí)現(xiàn)的,則我們認(rèn)為這個(gè)軟件系統(tǒng)是面向?qū)ο蟮?。第十九頁,共一百五十七頁,編輯?023年,星期五20對象對象是面向?qū)ο箝_發(fā)模式的基本成份。每個(gè)對象可用它本身的一組屬性和它可以執(zhí)行的一組操作來定義。屬性一般只能通過執(zhí)行對象的操作來改變。操作又稱為方法或服務(wù),它描述了對象執(zhí)行的功能,若通過消息傳遞,還可以為其它對象使用。第二十頁,共一百五十七頁,編輯于2023年,星期五21消息(Message)消息是一個(gè)對象與另一個(gè)對象的通信單元,是要求某個(gè)對象執(zhí)行類中定義的某個(gè)操作的規(guī)格說明。一個(gè)對象接收到消息則調(diào)用消息中指定的方法,并將形式參數(shù)與參數(shù)表中相應(yīng)的值結(jié)合起來。第二十一頁,共一百五十七頁,編輯于2023年,星期五22類類是一組具有相同數(shù)據(jù)結(jié)構(gòu)和相同操作的對象的集合。類的定義包括一組數(shù)據(jù)屬性和在數(shù)據(jù)上的一組合法操作。類定義可以視為一個(gè)具有類似特性與共同行為的對象的模板,可用來產(chǎn)生對象。第二十二頁,共一百五十七頁,編輯于2023年,星期五23同一個(gè)類的每個(gè)對象都是類的實(shí)例(Instance),它們都可使用類中提供的函數(shù)。對象的狀態(tài)則包含在它的實(shí)例變量,即實(shí)例的屬性中。第二十三頁,共一百五十七頁,編輯于2023年,星期五24繼承(Inheritance)繼承是使用已存在的定義做為基礎(chǔ)建立新定義的技術(shù)。新類的定義是基礎(chǔ)類所聲明的數(shù)據(jù)和新類所增加的聲明的組合。新類復(fù)用既存的定義,而不要求修改既存類。既存類可當(dāng)做基類來引用,則新類相應(yīng)地可當(dāng)做派生類來引用。第二十四頁,共一百五十七頁,編輯于2023年,星期五25面向?qū)ο蠓椒▽W(xué)面向?qū)ο蠓治鯫OA面向?qū)ο笤O(shè)計(jì)OOD面向?qū)ο髮?shí)現(xiàn)OOP第二十五頁,共一百五十七頁,編輯于2023年,星期五26面向?qū)ο蠹夹g(shù)回顧面向?qū)ο蠹夹g(shù)是許多人歷經(jīng)多年研究積累的產(chǎn)物。類的概念,是面向?qū)ο蟮闹匾M成部分。Smalltalk,提出許多面向?qū)ο蠹夹g(shù)的核心概念,如:消息和繼承。Dijkstra的軟件正確性理念,提出了用抽象層構(gòu)造軟件的觀點(diǎn)。Ada語言,提出了一般性和包兩個(gè)概念。C++語言,最廣泛使用的面向?qū)ο蟮恼Z言。Java語言,健壯的、可移植的、流行的面向?qū)ο笳Z言。第二十六頁,共一百五十七頁,編輯于2023年,星期五27UML的產(chǎn)生1988年到1992年是面向?qū)ο蠓椒▽W(xué)蓬勃發(fā)展的時(shí)期,人們從各自的經(jīng)歷和軟件開發(fā)的經(jīng)驗(yàn)提出了各種面向?qū)ο蟮拈_發(fā)方法,代表的有:SallyShlaer和SteveMellor以信息模型化方法作為基礎(chǔ),并為目標(biāo)系統(tǒng)增設(shè)了狀態(tài)模型和過程模型;PeterCoad和EdYourdon則在信息模型化、面向?qū)ο蟮某绦蛟O(shè)計(jì)語言和基于知識的系統(tǒng)的基礎(chǔ)上,建立了他們的OOA和OOD,主要工具是類與對象圖、對象狀態(tài)圖和服務(wù)圖;HP公司的Fusion開發(fā)方法。第二十七頁,共一百五十七頁,編輯于2023年,星期五28JimRumbaughGradyBoochIvarJacobson第二十八頁,共一百五十七頁,編輯于2023年,星期五29OOA和OOD是面向?qū)ο蠓椒▽W(xué)中重要的部分,UML是具體的方法OOP涉及到具體的編程語言,C++開發(fā)要使用合適的工具IDE:VisualC++第二十九頁,共一百五十七頁,編輯于2023年,星期五面向?qū)ο蟮奶攸c(diǎn)30封裝(Encapsulation)通過定義類實(shí)現(xiàn)繼承(Inheritance)通過派生新類實(shí)現(xiàn)多態(tài)性(Morphism)虛擬函數(shù)實(shí)現(xiàn)第三十頁,共一百五十七頁,編輯于2023年,星期五XO(X?-Oriented)SO(Service-Oriented)OO(對象、類)PO(過程、函數(shù)、變量)OO之后是什么?第三十一頁,共一百五十七頁,編輯于2023年,星期五32第二部分C++語法概要第一章C++基礎(chǔ)第三十二頁,共一百五十七頁,編輯于2023年,星期五331.1C++的起源和特點(diǎn)C語言1972年,由DennisRitchie設(shè)計(jì),可以認(rèn)為是最優(yōu)影響力的發(fā)明之一。為改進(jìn)C語言,“帶類的C”,1983命名為C++對C的類型系統(tǒng)改進(jìn)和擴(kuò)充(更安全)支持面向?qū)ο驝++保持與C兼容(快速普及)C++不是純粹的面向?qū)ο蟮恼Z言第三十三頁,共一百五十七頁,編輯于2023年,星期五341.2程序的編譯過程第三十四頁,共一百五十七頁,編輯于2023年,星期五351.3C++的詞法記號關(guān)鍵字各種常量操作符標(biāo)識符分隔符第三十五頁,共一百五十七頁,編輯于2023年,星期五361.4C++程序的結(jié)構(gòu)第三十六頁,共一百五十七頁,編輯于2023年,星期五37注釋輸入和輸出函數(shù)變量(對象)符號常量表達(dá)式語句第三十七頁,共一百五十七頁,編輯于2023年,星期五381.5C++的基本數(shù)據(jù)類型第三十八頁,共一百五十七頁,編輯于2023年,星期五391.7對象聲明基本語法如下:數(shù)據(jù)類型 標(biāo)識符1,標(biāo)識符2,。。。標(biāo)識符n;初始化數(shù)據(jù)類型 標(biāo)識符1(初始值1),標(biāo)識符2(初始值2),。。。標(biāo)識符n(初始值n);數(shù)據(jù)類型 標(biāo)識符1=初始值1,標(biāo)識符2=初始值2,。。。標(biāo)識符n=初始值n;賦值I=10;第三十九頁,共一百五十七頁,編輯于2023年,星期五401.6常量整數(shù)常量浮點(diǎn)常量字符常量字符串常量布爾常量第四十頁,共一百五十七頁,編輯于2023年,星期五411.8枚舉類型定義:通過枚舉一個(gè)類型的值域來定義一個(gè)數(shù)據(jù)類型,值域是通過在枚舉聲明時(shí)所指定的一組文字量(又稱枚舉常量)指定的。語法形式:enum標(biāo)識符{標(biāo)識符1,標(biāo)識符2,標(biāo)識符3,。。。標(biāo)識符n};第四十一頁,共一百五十七頁,編輯于2023年,星期五421.9表達(dá)式表達(dá)式由操作數(shù)和操作符組成,操作符分:算術(shù)操作符:+、-、*、/、%、++、--關(guān)系操作符:>、<、==、>=、<=、!=邏輯操作符:&&、||、!逗號表達(dá)式:?:sizeof操作符:sizeof位操作符:&、|、~賦值操作符:=第四十二頁,共一百五十七頁,編輯于2023年,星期五431.10表達(dá)式中的類型強(qiáng)制隱含地從一種類型向另一種類型的值的映射。賦值類型強(qiáng)制右邊的表達(dá)式類型映射成左值的類型。強(qiáng)制類型轉(zhuǎn)換static_cast<T>(E)T(E)(T)E第四十三頁,共一百五十七頁,編輯于2023年,星期五44第二章C++程序的基本控制結(jié)構(gòu)順序結(jié)構(gòu)表達(dá)式語句空語句塊語句選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)第四十四頁,共一百五十七頁,編輯于2023年,星期五452.1選擇結(jié)構(gòu)ifif-----else及其嵌套switch~case第四十五頁,共一百五十七頁,編輯于2023年,星期五462.2循環(huán)結(jié)構(gòu)whiledo~whilefor第四十六頁,共一百五十七頁,編輯于2023年,星期五47嵌套循環(huán)循環(huán)是可以嵌套的第四十七頁,共一百五十七頁,編輯于2023年,星期五482.3輔助控制語句gotobreakcontinue第四十八頁,共一百五十七頁,編輯于2023年,星期五49第三章函數(shù)第四十九頁,共一百五十七頁,編輯于2023年,星期五503.1函數(shù)的基本概念完成特定功能的一段代碼具有合法的名稱具有一定返回類型可以多次調(diào)用基本形式:返回類型函數(shù)名(形式參數(shù)1, 形式參數(shù)2,。。。,形式參數(shù)n){

函數(shù)體;}第五十頁,共一百五十七頁,編輯于2023年,星期五513.2參數(shù)的傳遞值調(diào)用地址調(diào)用引用調(diào)用參數(shù)的求值順序第五十一頁,共一百五十七頁,編輯于2023年,星期五523.3重載具有相同函數(shù)名,但其參數(shù)個(gè)數(shù)不同或參數(shù)類型不同的一組函數(shù)稱為重載。第五十二頁,共一百五十七頁,編輯于2023年,星期五533.4帶缺省參數(shù)值的函數(shù)函數(shù)聲明中可以為一個(gè)或多個(gè)參數(shù)指定缺省參數(shù)值。具有缺省值的參數(shù)右邊不能出現(xiàn)沒有缺省值的參數(shù)。重載函數(shù)的參數(shù)具有缺省值時(shí)要注意。例:voidfun(intx,inty=0)voidfun(intx)第五十三頁,共一百五十七頁,編輯于2023年,星期五54第四章類和對象4.1類的結(jié)構(gòu)C++的類是對象的抽象數(shù)據(jù)成員。成員函數(shù)。C++類的說明第二部分C++語法概要第五十四頁,共一百五十七頁,編輯于2023年,星期五55舉例:4.1類的結(jié)構(gòu)(外部說明)第五十五頁,共一百五十七頁,編輯于2023年,星期五56訪問控制描述符public后聲明的是公有數(shù)據(jù)成員和成員函數(shù),可被任何程序單元引用。private后聲明的是私有數(shù)據(jù)成員和成員函數(shù),僅可被類內(nèi)部引用。public和private出現(xiàn)的順序和次數(shù)是任意的。4.1類的結(jié)構(gòu)(外部說明)第五十六頁,共一百五十七頁,編輯于2023年,星期五57類成員函數(shù)的實(shí)現(xiàn)4.1類的結(jié)構(gòu)(內(nèi)部實(shí)現(xiàn))舉例第五十七頁,共一百五十七頁,編輯于2023年,星期五584.2類的實(shí)例化--對象的實(shí)現(xiàn)一般語法:類標(biāo)識符對象標(biāo)識符;可以聲明多個(gè)對象,對象之間代碼共享,數(shù)據(jù)獨(dú)立。可使用對象名引用對象的公有成員函數(shù)。方法如下:對象名.成員函數(shù)名(參數(shù)列表);第五十八頁,共一百五十七頁,編輯于2023年,星期五594.2類的實(shí)例化--對象的實(shí)現(xiàn)成員函數(shù)所操作的數(shù)據(jù)成員是該類的某個(gè)對象的數(shù)據(jù)成員。第五十九頁,共一百五十七頁,編輯于2023年,星期五60舉例4.2類的實(shí)例化--對象的實(shí)現(xiàn)第六十頁,共一百五十七頁,編輯于2023年,星期五614.3構(gòu)造函數(shù)和析構(gòu)函數(shù)構(gòu)造函數(shù)的作用是在對象被創(chuàng)建時(shí)使用特定的值構(gòu)造對象(初始化)。析構(gòu)函數(shù)的作用是在對象被刪除時(shí)做一些清理工作。構(gòu)造函數(shù)與類同名。析構(gòu)函數(shù)是類名前加~兩者無返回類型,析構(gòu)函數(shù)無參數(shù)。第六十一頁,共一百五十七頁,編輯于2023年,星期五624.3構(gòu)造函數(shù)和析構(gòu)函數(shù)舉例第六十二頁,共一百五十七頁,編輯于2023年,星期五634.3構(gòu)造函數(shù)和析構(gòu)函數(shù)第六十三頁,共一百五十七頁,編輯于2023年,星期五644.3構(gòu)造函數(shù)和析構(gòu)函數(shù)第六十四頁,共一百五十七頁,編輯于2023年,星期五654.4成員函數(shù)的內(nèi)聯(lián)實(shí)現(xiàn)函數(shù)體放在類體內(nèi)。函數(shù)體放在類體外,使用inline關(guān)鍵字。第六十五頁,共一百五十七頁,編輯于2023年,星期五664.4成員函數(shù)的內(nèi)聯(lián)實(shí)現(xiàn)第六十六頁,共一百五十七頁,編輯于2023年,星期五674.5帶缺省參數(shù)值的成員函數(shù)和成員函數(shù)重載#include<iostream.h>classLocation{public: Location(intx=0,inty=0); voidMove(intx=5,inty=5); voidValueX(intx); intValueX(); voidValueY(inty); intValueY();private: voidSet(intx,inty); intX,Y;};第六十七頁,共一百五十七頁,編輯于2023年,星期五684.5帶缺省參數(shù)值的成員函數(shù)和成員函數(shù)重載Location::Location(intx,inty){Set(x,y);}voidLocation::Move(intx,inty){Set(x,y);}voidLocation::ValueX(intval){X=val;}intLocation::ValueX(){returnX;}voidLocation::ValueY(intval){Y=val;}intLocation::ValueY(){returnY;}voidLocation::Set(intx,inty){X=x;Y=y;}第六十八頁,共一百五十七頁,編輯于2023年,星期五694.5帶缺省參數(shù)值的成員函數(shù)和成員函數(shù)重載intmain(){ LocationA,B;//LocationA(0,0),B(0,0)A.Move();//A.X和A.Y被設(shè)為5A.ValueX(15);//A.X=15cout<<A.ValueX()<<A.ValueY()<<endl;B.Move(6,2);//B.X=6,B.Y=2B.ValueY(4);cout<<B.ValueX()<<B.ValueY()<<endl;return0;}第六十九頁,共一百五十七頁,編輯于2023年,星期五70第五章作用域、生存期和可見性第七十頁,共一百五十七頁,編輯于2023年,星期五715.1作用域及可見性一個(gè)標(biāo)識符的有效區(qū)域。分為:函數(shù)原型作用域、塊作用域、類作用域、文件作用域。第七十一頁,共一百五十七頁,編輯于2023年,星期五72函數(shù)原型作用域函數(shù)原型中所作的參數(shù)聲明在該作用域,始于左括號,結(jié)束于右括號。第七十二頁,共一百五十七頁,編輯于2023年,星期五73塊作用域塊作用域由一對花括號定義。(局部作用域)第七十三頁,共一百五十七頁,編輯于2023年,星期五74塊作用域第七十四頁,共一百五十七頁,編輯于2023年,星期五75類作用域第七十五頁,共一百五十七頁,編輯于2023年,星期五76文件作用域第七十六頁,共一百五十七頁,編輯于2023年,星期五77可見性標(biāo)識符是否可以引用。在嵌套作用域中,內(nèi)層作用域的標(biāo)識符優(yōu)先于外層作用域的標(biāo)識符。C++中,標(biāo)識符必須先聲明后引用,在同一作用域中不能聲明同樣的標(biāo)識符。第七十七頁,共一百五十七頁,編輯于2023年,星期五78可見性舉例第七十八頁,共一百五十七頁,編輯于2023年,星期五795.2對象的生存期靜態(tài)生存期與程序的運(yùn)行期相同。這種對象的存儲單元相對位置在整個(gè)程序的運(yùn)行期間不變文件作用域或用static指定。若未顯式指定初始值,為零。動態(tài)生存期在函數(shù)內(nèi)部(塊作用域)聲明的對象是動態(tài)生存期。若未顯式指定初始值,為任意值。第七十九頁,共一百五十七頁,編輯于2023年,星期五80對象的生存期舉例第八十頁,共一百五十七頁,編輯于2023年,星期五815.3靜態(tài)成員函數(shù)和靜態(tài)數(shù)據(jù)成員第八十一頁,共一百五十七頁,編輯于2023年,星期五82數(shù)據(jù)共享的方法數(shù)據(jù)存儲在局部對象中,通過參數(shù)傳遞機(jī)制實(shí)現(xiàn)函數(shù)間的數(shù)據(jù)共享。數(shù)據(jù)存儲在全局對象中,通過全局對象進(jìn)行數(shù)據(jù)交換。封裝在類中全局對象存在的問題可見性無限制不能保證操作的合法性解決上述問題的方法是類及其封裝技術(shù),相應(yīng)提出靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)。第八十二頁,共一百五十七頁,編輯于2023年,星期五83舉例第八十三頁,共一百五十七頁,編輯于2023年,星期五84舉例第八十四頁,共一百五十七頁,編輯于2023年,星期五85舉例第八十五頁,共一百五十七頁,編輯于2023年,星期五86舉例第八十六頁,共一百五十七頁,編輯于2023年,星期五87舉例第八十七頁,共一百五十七頁,編輯于2023年,星期五88第六章對象與指針第八十八頁,共一百五十七頁,編輯于2023年,星期五896.1指針指針:對象的地址指針對象:存放指針的對象聲明指針對象的語法:T*標(biāo)識符;int*pointer;一個(gè)指針對象被賦值為一個(gè)對象的地址后,稱指針指向?qū)ο?。第八十九頁,共一百五十七頁,編輯?023年,星期五90為指針對象引入的兩種操作&-----取地址操作*-----目標(biāo)操作第九十頁,共一百五十七頁,編輯于2023年,星期五91第九十一頁,共一百五十七頁,編輯于2023年,星期五92第九十二頁,共一百五十七頁,編輯于2023年,星期五93第九十三頁,共一百五十七頁,編輯于2023年,星期五94第九十四頁,共一百五十七頁,編輯于2023年,星期五956.2數(shù)組和指針數(shù)組:一組類型相同的對象聲明語法:類型 標(biāo)識符[元素個(gè)數(shù)];數(shù)組元素可以用下標(biāo)引用數(shù)組名[index];數(shù)組元素也可以用指針引用第九十五頁,共一百五十七頁,編輯于2023年,星期五96數(shù)組和指針通過指針引用數(shù)組元素定義指針對象數(shù)組的地址賦值給指針對象。指針引用數(shù)組元素的方法*(pointer+n)pointer[n]第九十六頁,共一百五十七頁,編輯于2023年,星期五97對象數(shù)組沒有為數(shù)組指定顯式初始值時(shí),數(shù)組元素使用缺省值初始化,當(dāng)定義對象數(shù)組時(shí),類中必須定義一個(gè)缺省的構(gòu)造函數(shù)。第九十七頁,共一百五十七頁,編輯于2023年,星期五98舉例第九十八頁,共一百五十七頁,編輯于2023年,星期五996.3引用是標(biāo)識對象的一種機(jī)制(是對象的一個(gè)別名)一般用作參數(shù)類型、函數(shù)返回類型。一般語法如下:基本類型&標(biāo)識符一個(gè)引用不是獨(dú)立的對象,只是對另一個(gè)對象的引用?;绢愋?標(biāo)識符=對象;第九十九頁,共一百五十七頁,編輯于2023年,星期五100第一百頁,共一百五十七頁,編輯于2023年,星期五101第一百零一頁,共一百五十七頁,編輯于2023年,星期五102棧對象與堆對象在程序運(yùn)行中根據(jù)需要在堆內(nèi)存中創(chuàng)建的對象,使用完成后隨時(shí)被刪除。創(chuàng)建語法如下:T*ptr=newT(初始值列表);刪除語法如下:deleteptr;數(shù)組對象的創(chuàng)建int*ptr=newint[10];數(shù)組對象的刪除delete[]ptr;第一百零二頁,共一百五十七頁,編輯于2023年,星期五103第一百零三頁,共一百五十七頁,編輯于2023年,星期五104第一百零四頁,共一百五十七頁,編輯于2023年,星期五105第一百零五頁,共一百五十七頁,編輯于2023年,星期五1066.4指針數(shù)組數(shù)組元素的類型是指針,這樣的數(shù)組稱指針數(shù)組。語法:T*標(biāo)識符[元素個(gè)數(shù)];第一百零六頁,共一百五十七頁,編輯于2023年,星期五107多維數(shù)組與指針多維數(shù)組可以解釋為其元素是多維數(shù)組的一維數(shù)組。第一百零七頁,共一百五十七頁,編輯于2023年,星期五1086.5this指針一個(gè)成員函數(shù)被調(diào)用時(shí),被自動傳遞一個(gè)隱含的參數(shù),該參數(shù)是一個(gè)指向正被該函數(shù)操作的對象的指針,在程序中可以用this引用它,因此稱其為this指針。第一百零八頁,共一百五十七頁,編輯于2023年,星期五1096.6具有子對象的類類型用內(nèi)部包含子對象的類實(shí)現(xiàn)復(fù)雜的類子對象的初始化第一百零九頁,共一百五十七頁,編輯于2023年,星期五110第一百一十頁,共一百五十七頁,編輯于2023年,星期五111第一百一十一頁,共一百五十七頁,編輯于2023年,星期五112第一百一十二頁,共一百五十七頁,編輯于2023年,星期五113第七章操作符重載當(dāng)使用操作符來表達(dá)對對象的某個(gè)操作時(shí),可以將操作符函數(shù)聲明為類的成員函數(shù)或類的友員函數(shù)。操作符的參數(shù)個(gè)數(shù)、優(yōu)先級、結(jié)合性和使用語法是由C++規(guī)定的,不能被改變。重載操作符的形參不能具有缺省值。重載操作符的返回值類型任意,但最好不是void。第一百一十三頁,共一百五十七頁,編輯于2023年,星期五1147.1重載為類的成員函數(shù)第一百一十四頁,共一百五十七頁,編輯于2023年,星期五115重載為類的成員函數(shù)第一百一十五頁,共一百五十七頁,編輯于2023年,星期五116重載為類的成員函數(shù)第一百一十六頁,共一百五十七頁,編輯于2023年,星期五117重載為類的成員函數(shù)第一百一十七頁,共一百五十七頁,編輯于2023年,星期五1187.2重載為類的友元函數(shù)第一百一十八頁,共一百五十七頁,編輯于2023年,星期五119重載為類的友元函數(shù)第一百一十九頁,共一百五十七頁,編輯于2023年,星期五120重載為類的友元函數(shù)第一百二十頁,共一百五十七頁,編輯于2023年,星期五121重載為類的友元函數(shù)第一百二十一頁,共一百五十七頁,編輯于2023年,星期五1227.3兩種方法的比較一元函數(shù)最好重載為成員函數(shù)二元函數(shù)一般重載為友元函數(shù)27.5+x賦值操作符只能重載為成員函數(shù)27.5=x++和--操作符有兩種形式,一般被重載為成員函數(shù)其中后綴操作重載后帶有一個(gè)整型參數(shù)。第一百二十二頁,共一百五十七頁,編輯于2023年,星期五123兩種方法的比較下標(biāo)操作符只能被重載為成員函數(shù)函數(shù)調(diào)用操作符可以看作是下標(biāo)操作符的擴(kuò)展第一百二十三頁,共一百五十七頁,編輯于2023年,星期五124第八章繼承與多態(tài)性通過已有的類進(jìn)行擴(kuò)展產(chǎn)生新類的過程產(chǎn)生的新類稱派生類產(chǎn)生派生類的類稱基類或父類。從一個(gè)基類派生稱單基繼承,從多個(gè)基類派生稱多基繼承。第一百二十四頁,共一百五十七頁,編輯于2023年,星期五125MouseScreenDeviceKeyboardTreeAppleTreeFruit第一百二十五頁,共一百五十七頁,編輯于2023年,星期五1268.1繼承第一百二十六頁,共一百五十七頁,編輯于2023年,星期五127訪問控制訪問控制用于控制基類中聲明的名字在多大的范圍內(nèi)能夠被派生類的用戶訪問訪問控制有三種public,protected,private基類模塊派生類模塊間接派生類模塊其他程序模塊第一百二十七頁,共一百五十七頁,編輯于2023年,星期五128第一百二十八頁,共一百五十七頁,編輯于2023年,星期五129公有繼承第一百二十九頁,共一百五十七頁,編輯于2023年,星期五130私有繼承第一百三十頁,共一百五十七頁,編輯于2023年,星期五131在派生類中訪問基類成員第一百三十一頁,共一百五十七頁,編輯于2023年,星期五132保護(hù)的成員對V模塊是public對H模塊是private第一百三十二頁,共一百五十七頁,編輯于2023年,星期五133多繼承可以將其視為單繼承來考察,每個(gè)基類與派生類的關(guān)系可以當(dāng)做單基繼承。第一百三十三頁,共一百五十七頁,編輯于2023年,星期五1348.2構(gòu)造函數(shù)和析構(gòu)函數(shù)派生類的數(shù)據(jù)成員由屬于基類的部分和屬于自己的部分組成,屬于基類的部分初始化應(yīng)由基類的構(gòu)造函數(shù)完成。構(gòu)造函數(shù)不被繼承,派生類必須調(diào)用基類的構(gòu)造函數(shù)來初始化屬于基類的部分?jǐn)?shù)據(jù)成員。一般形式如下:C::C(參數(shù)表0):C1(參數(shù)表1),C2(參數(shù)表2),…,Cn(參數(shù)表n){…}第一百三十四頁,共一百五十七頁,編輯于2023年,星期五135構(gòu)造函數(shù)和析構(gòu)函數(shù)如果冒號右邊的某個(gè)基類的構(gòu)造函數(shù)參數(shù)表為空,則可以省略該項(xiàng)。構(gòu)造對象時(shí),先執(zhí)行基類的構(gòu)造函數(shù),然后執(zhí)行派生類的構(gòu)造函數(shù)。析構(gòu)時(shí)則相反。多基繼承時(shí)基類構(gòu)造函數(shù)的執(zhí)行順序由繼承時(shí)的順序決定(從左向右),與初始化列表中的順序無關(guān)。第一百三十五頁,共一百五十七頁,編輯于2023年,星期五136構(gòu)造函數(shù)和析構(gòu)函數(shù)第一百三十六頁,共一百五十七頁,編輯于2023年,星期五137構(gòu)造函數(shù)和析構(gòu)函數(shù)第一百三十七頁,共一百五十七頁,編輯于2023年,星期五138構(gòu)造函數(shù)和析構(gòu)函數(shù)第一百三十八頁,共一百五十七頁,編輯于2023年,星期五1398.3二義性如果派生類的一個(gè)表達(dá)式引用基類中不止一個(gè)成員,則存在二義性。解決二義性的辦法是加類限定符。第一百三十九頁,共一百五十七頁,編輯于2023年,星期五140二義性第一百四十頁,共一百五十七頁,編輯于2023年,星期五141二義性如果一個(gè)派生類是從多個(gè)基類派生,而這些基類又有一個(gè)共同的基類,則在對該基類中聲明的標(biāo)識符進(jìn)行訪問時(shí)可能產(chǎn)生二義性。

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論