c++考研復(fù)試問題整理_第1頁
c++考研復(fù)試問題整理_第2頁
c++考研復(fù)試問題整理_第3頁
c++考研復(fù)試問題整理_第4頁
c++考研復(fù)試問題整理_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C++面向?qū)ο蟪绦蛟O(shè)計第一章:c++的初步知識1.C語言和c++的區(qū)別?C語言是結(jié)構(gòu)化和模塊化的語言,它是面向過程的。在處理較小規(guī)模的程序時,使用c語言極為方便。但是當(dāng)問題規(guī)模較復(fù)雜時,c語言便顯得較為吃力。C++保留了c語言的所有優(yōu)點,并增加了面向?qū)ο髾C制,具有類、封裝、繼承、多態(tài)等特性,在開發(fā)較大規(guī)模程序時可以明顯提高軟件開發(fā)效率。2.#define與const在c語言中常用#define指令在定義符號常量,這樣定義是在預(yù)編譯時進行字符置換,在預(yù)編譯后,程序不再有PI這個標(biāo)識符。PI不是變量,沒有類型,不占用存儲單元,且容易出錯。C++中提供const定義常變量,它具有變量的屬性,有數(shù)據(jù)類型,占用存儲單元,有地址,可用指針指向它,只是在程序運行時變量值不變,且不能改變。3.什么是函數(shù)模板?建立一個通用函數(shù),其函數(shù)類型和形參類型不具體指定,用一個虛擬的類型來代替,這個通用函數(shù)就稱為函數(shù)模板。聲明:template<typenameT>4.什么是“引用”?引用又稱別名,引用的作用是為一個變量再起另一個名字,以便在需要時可以間接引用該變量。對一個變量的“引用”的所有操作,實際上都是對其原來的變量的操作。在聲明引用時,必須對其初始化。注:引用不是獨立的變量,不單獨分配存儲單元。5.值傳遞和引用傳遞的區(qū)別?值傳遞將實參的值傳遞給形參,形參是實參的一個拷貝;引用傳遞是將實參的地址傳給引用型形參,這時形參和實參是同一個變量6.什么是內(nèi)置函數(shù)?調(diào)用函數(shù)需要一定的時間,如果有些函數(shù)需要頻繁使用,則累計所用時間會很長,從而降低程序的執(zhí)行效率。C++中可以通過在函數(shù)左端添加關(guān)鍵字inline,使程序在編譯時將所調(diào)用的函數(shù)代碼直接嵌入到主調(diào)函數(shù)中,從而減少運行時間,提高運行速度,這便是內(nèi)置函數(shù)。7.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ù)組成,數(shù)據(jù)即屬性,函數(shù)用來對數(shù)據(jù)進行操作,以便實現(xiàn)某些功能。封裝:①將有關(guān)的數(shù)據(jù)和操作代碼封裝在一個對象中,形成一個基本單位,各個對象間相互獨立,互不干擾。②將對象中某些部分對外隱蔽,只留下少數(shù)接口,方便與外界聯(lián)系,接收外界消息。抽象:將有關(guān)事物的共性歸納、集中的過程,表示同一類事物的本質(zhì)。(類是對象的抽象,對象是類的實例)繼承:多態(tài):由繼承而產(chǎn)生的派生類,其對象會對同一消息不同的反應(yīng)。1.面向?qū)ο笤O(shè)計和面向過程設(shè)計的區(qū)別?面向過程設(shè)計的圍繞功能進行的,一個函數(shù)實現(xiàn)一個功能,所有數(shù)據(jù)都是公用的,程序設(shè)計者必須考慮每一個細節(jié),即什么時候?qū)κ裁磾?shù)據(jù)進行操作。(組成:程序=算法+數(shù)據(jù)結(jié)構(gòu))面向?qū)ο笤O(shè)計是圍繞對象進行的,將數(shù)據(jù)和有關(guān)操作封裝成一個個對象,程序設(shè)計者只需考慮如何設(shè)計類和對象以及怎樣向有關(guān)對象發(fā)送消息即可。(組成:程序=對象1+對象2+…+消息)2.類和對象的關(guān)系類是對象的抽象,而對象是類的具體實例。(類/對象相當(dāng)于結(jié)構(gòu)體類型/結(jié)構(gòu)體變量)類是抽象的,不占用內(nèi)存;對象是具體的,占用存儲空間。3.C++中類和結(jié)構(gòu)體的異同C++語言在編寫時為了兼容c,對結(jié)構(gòu)體的功能進行了擴展,使結(jié)構(gòu)體類型也具有封裝的特點,用struct聲明的結(jié)構(gòu)體類型實際上也是類。區(qū)別:1(關(guān)鍵)用struct聲明的類,如果對其成員不做私有和公有的聲明,則默認(rèn)為公有;而用class定義的類,如果對其成員不做公有和私有的聲明,則默認(rèn)為私有。2結(jié)構(gòu)體的執(zhí)行效率要比類高。3結(jié)構(gòu)體沒有析構(gòu)函數(shù),類有析構(gòu)函數(shù)。4結(jié)構(gòu)體不能繼承,類可以繼承4.成員函數(shù)的存儲方式?一個對象所占的空間大小只取決于該對象數(shù)據(jù)成員所占的空間,而與成員函數(shù)無關(guān)。函數(shù)的目標(biāo)代碼存儲在對象空間之外,供不同的對象調(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ù)或類型不同。(重載)2.析構(gòu)函數(shù)的作用?析構(gòu)函數(shù)的作用是在撤銷對象占用的內(nèi)存前完成一些清理工作,使這部分內(nèi)存可以被分配給新對象使用。在對象生命周期結(jié)束時自動執(zhí)行。無返回值,無函數(shù)類型,無函數(shù)參數(shù),不能被重載。一個類只能有一個。3.什么時候調(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ù)。4.指向?qū)ο蟪蓡T函數(shù)的指針三方面匹配:①函數(shù)類型和參數(shù)個數(shù);②函數(shù)返回值類型;③所屬類;(格式:指針變量名=&類名::成員函數(shù)名)5.常對象:(格式: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類型名*指針變量名)——常變量只能用指向常變量的指針來指向它,不能通過指針改變變量的值。6.靜態(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)成員。7.友元友元函數(shù):如果在類以外的其他地方定義了一個函數(shù),在類體中用friend對其進行聲明,該函數(shù)極為友元函數(shù)??稍L問類中私有成員。友元類:若A是B的友元類,則A可訪問B內(nèi)所有成員。特點:單向且不能傳遞。優(yōu):有利于數(shù)據(jù)共享,提高程序效率。弊:破壞封裝性。第四章:對運算符進行重載1.什么是運算符重載?對運算符進行函數(shù)重載,是指定的運算符不僅能實現(xiàn)原有的功能,而且能實現(xiàn)在函數(shù)中指定的新的功能。(格式:函數(shù)類型operator運算符名稱(形參表){處理…})好處:c++程序設(shè)計的重要基礎(chǔ)是類和對象,通過運算符重載,可以使現(xiàn)有的運算符直接應(yīng)用于類對象,提供的很大的方便。2.重載運算符的規(guī)則?1不允許定義新的運算符,只能對現(xiàn)有運算符進行重載。2重載不能改變運算符運算對象的個數(shù)。3不能改變運算符優(yōu)先級別。4不能改變運算符的結(jié)合性。5不能有默認(rèn)參數(shù)。6重載的運算符其參數(shù)至少應(yīng)有一個是類對象。3.運算符重載方式?1將運算符重載的函數(shù)作為類的成員函數(shù)(有this指針,可少寫一參數(shù));一般用于單目運算符。2將運算符重載函數(shù)作為友元函數(shù);一般用于雙目運算符。4.轉(zhuǎn)換構(gòu)造函數(shù)只有一個形參,用于將一個其他類型的數(shù)據(jù)轉(zhuǎn)換成一個類對象。格式:類名(指定類型的數(shù)據(jù)){…}5.類型轉(zhuǎn)換函數(shù)將一個類對象轉(zhuǎn)換成另一類型的數(shù)據(jù)。只能作為成員函數(shù)。格式:operator類型名(){轉(zhuǎn)換語句…}第五章:繼承與派生類的繼承:一個新類從已有的類那里獲得其已有屬性。派生類是基類的具體化,而基類是派生類的抽象。1.繼承方式?1公用繼承基(public/protected)→派(public/protected)基(private)→派(private)2私有繼承基(public/protected)→派(private)基(private)→派(private)3保護繼承基(public/protected)→派(protected)基(private)→派(private)2.派生類析構(gòu)函數(shù)調(diào)用順序?自身→子對象→基類3.虛基類若一個派生類有多個直接基類,而這些直接基類又有一個共同的基類,則在最終的派生類中會保留多份間接共同基類的同名成員,這是沒有必要的。為此,產(chǎn)生了虛基類,使在繼承間接共同基類時只保留一份成員。(class派生類名:virtual繼承方式基類名)4.繼承與組合類的組合:在一個類中以另一個類的對象作為數(shù)據(jù)成員。建立成員類與組合類的關(guān)系;“有”的關(guān)系;橫向。類的繼承:建立派生類與基類的關(guān)系;“是”的關(guān)系;(eg:白貓是貓);縱向。第六章:多態(tài)性與虛函數(shù)多態(tài)性:向不同的對象發(fā)送同一個消息,不同的對象在接收時會產(chǎn)生不同的行為。1.多態(tài)性的分類?靜態(tài)多態(tài)性:通過函數(shù)重載實現(xiàn)。由函數(shù)重載和運算符重載形成的多態(tài)性屬于靜態(tài)多態(tài)性,要求在編譯時就知道調(diào)用函數(shù)的全部信息,因此在程序編譯時系統(tǒng)就能決定要調(diào)用的是哪個函數(shù)。優(yōu):調(diào)用速度快、效率高;缺:缺乏靈活性。動態(tài)多態(tài)性:通過虛函數(shù)實現(xiàn)。不在編譯時確定調(diào)用的是哪個函數(shù),而是在程序運行過程中才能動態(tài)確定操作所指向的對象。2.什么是虛函數(shù)?在基類中聲明函數(shù)是虛擬的,并不是實際存在的函數(shù),然后在派生類中才正式定義此函數(shù)。用來解決動態(tài)多態(tài)問題,在程序運行期間,用指針指向某一類派生類對象,這樣就能調(diào)用指針指向的派生類對象中的函數(shù),而不會調(diào)用其他派生類中的函數(shù)。(同一類族中不同類的對象,對同一函數(shù)調(diào)用做出不同的響應(yīng))作用:運行在派生類中重新定義與基類同名的函數(shù),并且可以通過基類指針或引用來訪問基類和派生類中的同名函數(shù)。3.函數(shù)重載和虛函數(shù)的區(qū)別?函數(shù)重載處理的是同一層次上的函數(shù)同名問題,而虛函數(shù)處理的是不同派生層次上的函數(shù)同名問題;同一類族中的虛函數(shù)首部是相同的,而函數(shù)重載時函數(shù)的首部是不同的(參數(shù)個數(shù)或類型不同)4.什么是純虛函數(shù)?純虛函數(shù)時在聲明虛函數(shù)時被初始化為0的函數(shù)。只有函數(shù)名沒有函數(shù)體,不能被調(diào)用。(他只是告訴編譯系統(tǒng):“我在這里聲明一個虛函數(shù),等到派生類里再定義”)作用:在基類中為其派生類保留一個函數(shù)的名字,以便派生類根據(jù)需要對其定義。格式:virtual函數(shù)類型函數(shù)名(參數(shù)列表)=0;5.什么是抽象類?不用來定義對象而只作為一種基本類型用作繼承的類。凡是包含純虛函數(shù)的類都是抽象類。作用:為一個類族提供一個公共接口。(注:若派生類中未對所有純虛函數(shù)進行定義,則其依然是抽象類)8.c和c++的區(qū)別:c語言面向過程,重點在于算法和數(shù)據(jù)結(jié)構(gòu);c++是面向?qū)ο笳Z言,它是c語言的繼承,既可以進行c語言的面向過程程序設(shè)計,又可以進行面向?qū)ο蟮某绦蛟O(shè)計,具有類、封裝、繼承、多態(tài)等特性。9.什么是內(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ù)。10.面向?qū)ο蠛兔嫦蜻^程的區(qū)別:面向過程是一種以過程為中心的編程思想,用一個函數(shù)實現(xiàn)一個功能,所有的數(shù)據(jù)都是公用的,程序設(shè)計者必須考慮每一個細節(jié),什么時候?qū)κ裁磾?shù)據(jù)進行操作。組成:程序=算法+數(shù)據(jù)結(jié)構(gòu);面向?qū)ο笫且环N以對象為中心的編程思想,將數(shù)據(jù)和有關(guān)操作封裝成一個對象,程序設(shè)計者只需要設(shè)計所需的各種類和對象以及考慮怎樣向有關(guān)對象發(fā)送消息,以完成所需的任務(wù)即可。組成:程序=對象s+消息。11.值傳遞和引用傳遞的區(qū)別:值傳遞傳遞的是一個值的副本,函數(shù)對形參的操作不會影響實參的值;引用傳遞傳遞的對象的內(nèi)存地址,函數(shù)對形參的操作會影響實參的值,實參的值會隨著形參的值的改變而改變。12.類和結(jié)構(gòu)體有什么區(qū)別?C++在編寫時為了兼容c,于是向結(jié)構(gòu)體添加了功能,使其也具有類的特點,用struct聲明的結(jié)構(gòu)體類型實際也是類,但兩者之間依然存在差別。1用struct聲明的類,若對其成員不做私有和公有的聲明,系統(tǒng)將其默認(rèn)定義為public,而用class定義的類,默認(rèn)為private;②結(jié)構(gòu)體的執(zhí)行效率要比類高;③結(jié)構(gòu)體沒有析構(gòu)函數(shù),類有析構(gòu)函數(shù);④結(jié)構(gòu)體不可以繼承,類可以繼承。13.引用與指針的區(qū)別?1引用無需解引用,指針需要解引用。2引用在定義時被初始化一次,之后不可變,指針可變3引用不能為空,指針可以為空4程序為指針變量分配內(nèi)存區(qū)域,而引用不需分配內(nèi)存區(qū)域。14.什么是靜態(tài)函數(shù)和靜態(tài)變量?靜態(tài)數(shù)據(jù)成員在編譯時就創(chuàng)建并初始化:在該類的如何對象建立之前就存在,不屬于任何對象,而非靜態(tài)成員變量則屬于對象所有。類靜態(tài)數(shù)據(jù)成員只有一個拷貝,為所有此類的對象所共享。15.Const1Const修飾類的成員變量,表示成員常量,不能被修改2Const修飾函數(shù)承諾在本函數(shù)內(nèi)部不會修改類的數(shù)據(jù)成員,不會調(diào)用其它非const成員函數(shù)3如果const構(gòu)成函數(shù)重載,const對象只能調(diào)用const函數(shù),非const對象優(yōu)先調(diào)用非const函數(shù)4Const函數(shù)只能調(diào)用const函數(shù),非const函數(shù)能調(diào)用const函數(shù)5類體外定義的const成員函數(shù),在定義和聲明處都需要const修飾符16.面向?qū)ο笕筇匦裕?封裝:實現(xiàn)面向?qū)ο蟪绦蛟O(shè)計的第一步,封裝就是將數(shù)據(jù)與函數(shù)等集合在一個個單元中,我們稱之為類。2繼承:繼承主要實現(xiàn)重用代碼,節(jié)省開發(fā)時間,子類可以繼承父類的一些特性。3多態(tài):同一操作作用于不同的對象,可以有不同的解釋,產(chǎn)生不同的執(zhí)行結(jié)果。在運行時,可以通過指向基類的指針,來調(diào)用實現(xiàn)派生類中的方法。17.什么是虛函數(shù)和純虛函數(shù)?基類指針可以指向其公有派生類對象,但當(dāng)用基類指針訪問其指向的派生類對象時,只能訪問該派生類從基類中繼承來的方

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論