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

下載本文檔

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

文檔簡介

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論