




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C++面向?qū)ο蟪绦蛟O(shè)計第一章:c++的初步知識C語言和c++的區(qū)別?C語言是構(gòu)造化和模塊化的語言,它是面向過程的。在處理較小規(guī)模的程序時,使用c語言極為以便。不過當問題規(guī)模較復雜時,c語言便顯得較為吃力。C++保留了c語言的所有長處,并增長了面向?qū)ο髾C制,具有類、封裝、繼承、多態(tài)等特性,在開發(fā)較大規(guī)模程序時可以明顯提高軟件開發(fā)效率。#define與const在c語言中常用#define指令在定義符號常量,這樣定義是在預(yù)編譯時進行字符置換,在預(yù)編譯后,程序不再有PI這個標識符。PI不是變量,沒有類型,不占用存儲單元,且輕易出錯。C++中提供const定義常變量,它具有變量的屬性,有數(shù)據(jù)類型,占用存儲單元,有地址,可用指針指向它,只是在程序運行時變量值不變,且不能變化。什么是函數(shù)模板?建立一種通用函數(shù),其函數(shù)類型和形參類型不詳細指定,用一種虛擬的類型來替代,這個通用函數(shù)就稱為函數(shù)模板。申明:template<typenameT>什么是“引用”?引用又稱別名,引用的作用是為一種變量再起另一種名字,以便在需要時可以間接引用該變量。對一種變量的“引用”的所有操作,實際上都是對其本來的變量的操作。在申明引用時,必須對其初始化。注:引用不是獨立的變量,不單獨分派存儲單元。值傳遞和引用傳遞的區(qū)別?值傳遞將實參的值傳遞給形參,形參是實參的一種拷貝;引用傳遞是將實參的地址傳給引用型形參,這時形參和實參是同一種變量什么是內(nèi)置函數(shù)?調(diào)用函數(shù)需要一定的時間,假如有些函數(shù)需要頻繁使用,則合計所用時間會很長,從而減少程序的執(zhí)行效率。C++中可以通過在函數(shù)左端添加關(guān)鍵字inline,使程序在編譯時將所調(diào)用的函數(shù)代碼直接嵌入到主調(diào)函數(shù)中,從而減少運行時間,提高運行速度,這便是內(nèi)置函數(shù)。new/delete和malloc/free在軟件開發(fā)中,常常需要動態(tài)分派和撤銷內(nèi)存空間。c語言中使用malloc/free,在使用malloc函數(shù)時必須指定需要開辟的內(nèi)存空間的大小,(格式:malloc(size)),此外malloc函數(shù)只能從顧客處懂得應(yīng)開辟空間的大小而不懂得數(shù)據(jù)的類型,因此無法使其返回的指針指向詳細的數(shù)據(jù)。C++中使用new/delete,(格式:new類型[初值]),使動態(tài)分派空間愈加以便。第二章:類和對象的特性對象:客觀世界的實體。每個對象均由數(shù)據(jù)和函數(shù)構(gòu)成,數(shù)據(jù)即屬性,函數(shù)用來對數(shù)據(jù)進行操作,以便實現(xiàn)某些功能。封裝:①將有關(guān)的數(shù)據(jù)和操作代碼封裝在一種對象中,形成一種基本單位,各個對象間互相獨立,互不干擾。②將對象中某些部分對外隱蔽,只留下少數(shù)接口,以便與外界聯(lián)絡(luò),接受外界消息。抽象:將有關(guān)事物的共性歸納、集中的過程,表達同一類事物的本質(zhì)。(類是對象的抽象,對象是類的實例)繼承:多態(tài):由繼承而產(chǎn)生的派生類,其對象會對同一消息不一樣的反應(yīng)。面向?qū)ο笤O(shè)計和面向過程設(shè)計的區(qū)別?面向過程設(shè)計的圍繞功能進行的,一種函數(shù)實現(xiàn)一種功能,所有數(shù)據(jù)都是公用的,程序設(shè)計者必須考慮每一種細節(jié),即什么時候?qū)κ裁磾?shù)據(jù)進行操作。(構(gòu)成:程序=算法+數(shù)據(jù)構(gòu)造)面向?qū)ο笤O(shè)計是圍繞對象進行的,將數(shù)據(jù)和有關(guān)操作封裝成一種個對象,程序設(shè)計者只需考慮怎樣設(shè)計類和對象以及怎樣向有關(guān)對象發(fā)送消息即可。(構(gòu)成:程序=對象1+對象2+…+消息)類和對象的關(guān)系類是對象的抽象,而對象是類的詳細實例。(類/對象相稱于構(gòu)造體類型/構(gòu)造體變量)類是抽象的,不占用內(nèi)存;對象是詳細的,占用存儲空間。C++中類和構(gòu)造體的異同C++語言在編寫時為了兼容c,對構(gòu)造體的功能進行了擴展,使構(gòu)造體類型也具有封裝的特點,用struct申明的構(gòu)造體類型實際上也是類。區(qū)別:(關(guān)鍵)用struct申明的類,假如對其組員不做私有和公有的申明,則默認為公有;而用class定義的類,假如對其組員不做公有和私有的申明,則默認為私有。構(gòu)造體的執(zhí)行效率要比類高。構(gòu)造體沒有析構(gòu)函數(shù),類有析構(gòu)函數(shù)。構(gòu)造體不能繼承,類可以繼承組員函數(shù)的存儲方式?一種對象所占的空間大小只取決于該對象數(shù)據(jù)組員所占的空間,而與組員函數(shù)無關(guān)。函數(shù)的目的代碼存儲在對象空間之外,供不一樣的對象調(diào)用。(c++設(shè)置了this指針用來指向不一樣的對象)第三章:怎樣使用類和對象1.構(gòu)造函數(shù)的作用?構(gòu)造函數(shù)用來處理對象的初始化,不需要顧客來調(diào)用它,而是在建立對象時自動執(zhí)行,且只能執(zhí)行一次。構(gòu)造函數(shù)的名字必須與類名同名,不能任意命名。它不具有怎樣類型,不返回任何值。一種類中可以定義多種構(gòu)造函數(shù),以便為對象提供不一樣的初始化措施,這些構(gòu)造函數(shù)具有相似的名字,而參數(shù)個數(shù)或類型不一樣。(重載)析構(gòu)函數(shù)的作用?析構(gòu)函數(shù)的作用是在撤銷對象占用的內(nèi)存前完畢某些清理工作,使這部分內(nèi)存可以被分派給新對象使用。在對象生命周期結(jié)束時自動執(zhí)行。無返回值,無函數(shù)類型,無函數(shù)參數(shù),不能被重載。一種類只能有一種。什么時候調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)?①全局對象:構(gòu)造——在本文獻模塊中所有函數(shù)執(zhí)行前調(diào)用;析構(gòu)——mian函數(shù)執(zhí)行完畢或調(diào)用exit函數(shù)。②局部對象:構(gòu)造——建立對象時調(diào)用;析構(gòu)——函數(shù)調(diào)用結(jié)束或?qū)ο筢尫艜r。③靜態(tài)局部對象:構(gòu)造——第一次調(diào)用此函數(shù)定義對象時調(diào)用一次;析構(gòu)——mian函數(shù)執(zhí)行完畢或調(diào)用exit函數(shù)。指向?qū)ο蠼M員函數(shù)的指針三方面匹配:①函數(shù)類型和參數(shù)個數(shù);②函數(shù)返回值類型;③所屬類;(格式:指針變量名=&類名::組員函數(shù)名)常對象:(格式:const類名對象名[(實參表)])——只能調(diào)用其常組員函數(shù),不能調(diào)用一般組員函數(shù)。怎樣保證常對象數(shù)據(jù)組員的值不會變化?——不能調(diào)用常對象中的一般組員函數(shù)+常組員函數(shù)不能修改對象的數(shù)據(jù)組員。常數(shù)據(jù)組員:只能通過構(gòu)造函數(shù)的參數(shù)初始化表對常數(shù)據(jù)組員進行初始化,任何其他函數(shù)都不能對常數(shù)據(jù)組員賦值。常組員函數(shù):(格式:類型名函數(shù)名(參數(shù)表)const)——只能引用本類中的數(shù)據(jù)組員,而不能修改它們。指向?qū)ο蟮某V羔槪海ǜ袷剑侯惷?const指針變量名)——指向不變指向常對象的指針:(格式:const類型名*指針變量名)——常變量只能用指向常變量的指針來指向它,不能通過指針變化變量的值。靜態(tài)組員static靜態(tài)數(shù)據(jù)組員:在程序編譯時被分派空間,程序結(jié)束時釋放;在所有對象之外單獨開辟空間,為所有對象所共有;只能在類體外初始化。靜態(tài)組員函數(shù):是類的一部分而不是對象的一部分,與任何對象無關(guān)。假如要在類外調(diào)用公用的靜態(tài)組員函數(shù),要用類名和域運算符::。沒有this指針,只能用來訪問靜態(tài)數(shù)據(jù)組員,而不能訪問非靜態(tài)組員。友元友元函數(shù):假如在類以外的其他地方定義了一種函數(shù),在類體中用friend對其進行申明,該函數(shù)極為友元函數(shù)??稍L問類中私有組員。友元類:若A是B的友元類,則A可訪問B內(nèi)所有組員。特點:單向且不能傳遞。優(yōu):有助于數(shù)據(jù)共享,提高程序效率。弊:破壞封裝性。第四章:對運算符進行重載什么是運算符重載?對運算符進行函數(shù)重載,是指定的運算符不僅能實現(xiàn)原有的功能,并且能實目前函數(shù)中指定的新的功能。(格式:函數(shù)類型operator運算符名稱(形參表){處理…})好處:c++程序設(shè)計的重要基礎(chǔ)是類和對象,通過運算符重載,可以使既有的運算符直接應(yīng)用于類對象,提供的很大的以便。重載運算符的規(guī)則?不容許定義新的運算符,只能對既有運算符進行重載。重載不能變化運算符運算對象的個數(shù)。不能變化運算符優(yōu)先級別。不能變化運算符的結(jié)合性。不能有默認參數(shù)。重載的運算符其參數(shù)至少應(yīng)有一種是類對象。運算符重載方式?將運算符重載的函數(shù)作為類的組員函數(shù)(有this指針,可少寫一參數(shù));一般用于單目運算符。將運算符重載函數(shù)作為友元函數(shù);一般用于雙目運算符。轉(zhuǎn)換構(gòu)造函數(shù)只有一種形參,用于將一種其他類型的數(shù)據(jù)轉(zhuǎn)換成一種類對象。格式:類名(指定類型的數(shù)據(jù)){…}類型轉(zhuǎn)換函數(shù)將一種類對象轉(zhuǎn)換成另一類型的數(shù)據(jù)。只能作為組員函數(shù)。格式:operator類型名(){轉(zhuǎn)換語句…}第五章:繼承與派生類的繼承:一種新類從已經(jīng)有的類那里獲得其已經(jīng)有屬性。派生類是基類的詳細化,而基類是派生類的抽象。繼承方式?公用繼承基(public/protected)→派(public/protected)基(private)→派(private)私有繼承基(public/protected)→派(private)基(private)→派(private)保護繼承基(public/protected)→派(protected)基(private)→派(private)派生類析構(gòu)函數(shù)調(diào)用次序?自身→子對象→基類虛基類若一種派生類有多種直接基類,而這些直接基類又有一種共同的基類,則在最終的派生類中會保留多份間接共同基類的同名組員,這是沒有必要的。為此,產(chǎn)生了虛基類,使在繼承間接共同基類時只保留一份組員。(class派生類名:virtual繼承方式基類名)繼承與組合類的組合:在一種類中以另一種類的對象作為數(shù)據(jù)組員。建立組員類與組合類的關(guān)系;“有”的關(guān)系;橫向。類的繼承:建立派生類與基類的關(guān)系;“是”的關(guān)系;(eg:白貓是貓);縱向。第六章:多態(tài)性與虛函數(shù)多態(tài)性:向不一樣的對象發(fā)送同一種消息,不一樣的對象在接受時會產(chǎn)生不一樣的行為。多態(tài)性的分類?靜態(tài)多態(tài)性:通過函數(shù)重載實現(xiàn)。由函數(shù)重載和運算符重載形成的多態(tài)性屬于靜態(tài)多態(tài)性,規(guī)定在編譯時就懂得調(diào)用函數(shù)的所有信息,因此在程序編譯時系統(tǒng)就能決定要調(diào)用的是哪個函數(shù)。優(yōu):調(diào)用速度快、效率高;缺:缺乏靈活性。動態(tài)多態(tài)性:通過虛函數(shù)實現(xiàn)。不在編譯時確定調(diào)用的是哪個函數(shù),而是在程序運行過程中才能動態(tài)確定操作所指向的對象。什么是虛函數(shù)?在基類中申明函數(shù)是虛擬的,并不是實際存在的函數(shù),然后在派生類中才正式定義此函數(shù)。用來處理動態(tài)多態(tài)問題,在程序運行期間,用指針指向某一類派生類對象,這樣就能調(diào)用指針指向的派生類對象中的函數(shù),而不會調(diào)用其他派生類中的函數(shù)。(同一類族中不一樣類的對象,對同一函數(shù)調(diào)用做出不一樣的響應(yīng))作用:運行在派生類中重新定義與基類同名的函數(shù),并且可以通過基類指針或引用來訪問基類和派生類中的同名函數(shù)。函數(shù)重載和虛函數(shù)的區(qū)別?函數(shù)重載處理的是同一層次上的函數(shù)同名問題,而虛函數(shù)處理的是不一樣派生層次上的函數(shù)同名問題;同一類族中的虛函數(shù)首部是相似的,而函數(shù)重載時函數(shù)的首部是不一樣的(參數(shù)個數(shù)或類型不一樣)什么是純虛函數(shù)?純虛函數(shù)時在申明虛函數(shù)時被初始化為0的函數(shù)。只有函數(shù)名沒有函數(shù)體,不能被調(diào)用。(他只是告訴編譯系統(tǒng):“我在這里申明一種虛函數(shù),等到派生類里再定義”)作用:在基類中為其派生類保留一種函數(shù)的名字,以便派生類根據(jù)需要對其定義。格式:virtual函數(shù)類型函數(shù)名(參數(shù)列表)=0;什么是抽象類?不用來定義對象而只作為一種基本類型用作繼承的類。但凡包括純虛函數(shù)的類都是抽象類。作用:為一種類族提供一種公共接口。(注:若派生類中未對所有純虛函數(shù)進行定義,則其仍然是抽象類)c和c++的區(qū)別:c語言面向過程,重點在于算法和數(shù)據(jù)構(gòu)造;c++是面向?qū)ο笳Z言,它是c語言的繼承,既可以進行c語言的面向過程程序設(shè)計,又可以進行面向?qū)ο蟮某绦蛟O(shè)計,具有類、封裝、繼承、多態(tài)等特性。什么是內(nèi)聯(lián)函數(shù)?調(diào)用函數(shù)時需要一定的使勁,若有些函數(shù)需要頻繁使用,合計所用時間會很長,從而減低程序執(zhí)行效率。通過在函數(shù)左端添加關(guān)鍵字inline,使程序在編譯時將所調(diào)用的函數(shù)代碼嵌入到主調(diào)函數(shù)中,從而減少運行時間,提高運行速度,這便是內(nèi)聯(lián)函數(shù)。面向?qū)ο蠛兔嫦蜻^程的區(qū)別:面向過程是一種以過程為中心的編程思想,用一種函數(shù)實現(xiàn)一種功能,所有的數(shù)據(jù)都是公用的,程序設(shè)計者必須考慮每一種細節(jié),什么時候?qū)κ裁磾?shù)據(jù)進行操作。構(gòu)成:程序=算法+數(shù)據(jù)構(gòu)造;面向?qū)ο笫且环N以對象為中心的編程思想,將數(shù)據(jù)和有關(guān)操作封裝成一種對象,程序設(shè)計者只需要設(shè)計所需的多種類和對象以及考慮怎樣向有關(guān)對象發(fā)送消息,以完畢所需的任務(wù)即可。構(gòu)成:程序=對象s+消息。值傳遞和引用傳遞的區(qū)別:值傳遞傳遞的是一種值的副本,函數(shù)對形參的操作不會影響實參的值;引用傳遞傳遞的對象的內(nèi)存地址,函數(shù)對形參的操作會影響實參的值,實參的值會伴隨形參的值的變化而變化。類和構(gòu)造體有什么區(qū)別?C++在編寫時為了兼容c,于是向構(gòu)造體添加了功能,使其也具有類的特點,用struct申明的構(gòu)造體類型實際也是類,但兩者之間仍然存在差異。用struct申明的類,若對其組員不做私有和公有的申明,系統(tǒng)將其默認定義為public,而用class定義的類,默認為private;②構(gòu)造體的執(zhí)行效率要比類高;③構(gòu)造體沒有析構(gòu)函數(shù),類有析構(gòu)函數(shù);④構(gòu)造體不可以繼承,類可以繼承。引用與指針的區(qū)別?引用無需解引用,指針需要解引用。引用在定義時被初始化一次,之后不可變,指針可變引用不能為空,指針可認為空程序為指針變量分派內(nèi)存區(qū)域,而引用不需分派內(nèi)存區(qū)域。什么是靜態(tài)函數(shù)和靜態(tài)變量?靜態(tài)數(shù)據(jù)組員在編譯時就創(chuàng)立并初始化:在該類的怎樣對象建立之前就存在,不屬于任何對象,而非靜態(tài)組員變量則屬于對象所有。類靜態(tài)數(shù)據(jù)組員只有一種拷貝,為所有此類的對象所共享。ConstConst修飾類的組員變量,表達組員常量,不能被修改Const修飾函數(shù)承諾在本函數(shù)內(nèi)部不會修改類的數(shù)據(jù)組員,不會調(diào)用其他非const組員函數(shù)假如const構(gòu)成函數(shù)重載,const對象只能調(diào)用const函數(shù),非const對象優(yōu)先調(diào)用非const函數(shù)Const函數(shù)只能調(diào)用const函數(shù),非const函數(shù)能調(diào)用const函數(shù)類體外定義的const組員函數(shù),在定義和申明處都需要const修飾符面向?qū)ο笕筇匦裕糠庋b:實現(xiàn)面向?qū)ο蟪绦蛟O(shè)計的第一步,封裝就是將數(shù)據(jù)與函數(shù)等集合在一種個單元中,我們稱之為類。繼承:繼承重要實現(xiàn)重用代碼,節(jié)省開發(fā)時間,子類可以繼承父類的某些特性。多態(tài):同一操作作用于不一樣的對象,可以有不一樣的解釋,產(chǎn)生不一樣的執(zhí)行成果。在運行時,可以通過指向基類的指針,來調(diào)用實現(xiàn)派生類中的措施。什么是虛函數(shù)和純虛函數(shù)?基類指針可以指向其公有派生類對象,但當用基類指針訪問其指向的派生類對象時,只能訪問該派生類從基類中繼承來的措
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 借款融資居間服務(wù)合同范本
- 加梯安裝合同范例
- 醫(yī)生技術(shù)股協(xié)議合同范本
- 單位燈具購買合同范本
- 修車合同范本模板
- 農(nóng)村建房買房合同范本
- 農(nóng)村豬場合同范本
- 人事專員勞務(wù)合同范本
- 勞務(wù)供銷合同范例
- dp付款方式合同范本
- 2022年華中科技大學博士研究生英語入學考試真題
- 09式 新擒敵拳 教學教案 教學法 圖解
- 《網(wǎng)店運營與管理》整本書電子教案全套教學教案
- 打印版 《固體物理教程》課后答案王矜奉
- CAD術(shù)語對照表
- 學術(shù)論文的寫作與規(guī)范課件
- 香港牛津新魔法Newmagic3AUnit4Mycalendar單元檢測試卷
- 中考《紅星照耀中國》各篇章練習題及答案(1-12)
- Q∕GDW 11612.43-2018 低壓電力線高速載波通信互聯(lián)互通技術(shù)規(guī)范 第4-3部分:應(yīng)用層通信協(xié)議
- 自動化物料編碼規(guī)則
- 第1本書出體旅程journeys out of the body精教版2003版
評論
0/150
提交評論