全國計(jì)算機(jī)二級(jí)C++考試復(fù)習(xí)知識(shí)點(diǎn)匯總_第1頁
全國計(jì)算機(jī)二級(jí)C++考試復(fù)習(xí)知識(shí)點(diǎn)匯總_第2頁
全國計(jì)算機(jī)二級(jí)C++考試復(fù)習(xí)知識(shí)點(diǎn)匯總_第3頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、2017年全國計(jì)算機(jī)二級(jí)C+考試復(fù)習(xí)知識(shí)點(diǎn)匯總一、C+概述( 一 ) 發(fā)展歷史1980年,Bjarne Stroustrup 博士開始著手創(chuàng)建一種模擬語言,能夠具有面 向?qū)ο蟮某绦蛟O(shè)計(jì)特色。在當(dāng)時(shí),面向?qū)ο缶幊踢€是一個(gè)比較新的理念, Strou strup博士并不是從頭開始設(shè)計(jì)新語言,而是在 C語言的基礎(chǔ)上進(jìn)行創(chuàng)建。這就1985年,C+開始在外面慢慢流行。經(jīng)過多年的發(fā)展,C+已經(jīng)有了多個(gè)版本。為次,ANSI和ISO的聯(lián)合委員會(huì)于1989年著手為C+制定標(biāo)準(zhǔn)。1994年2 月,該委員會(huì)出版了第一份非正式草案,1998年正式推出了 C+的國際標(biāo)準(zhǔn)。(二) C 和 C+C+是 C的超集,也可以說C是

2、C+的子集,因?yàn)镃先出現(xiàn)。按常理說,C+ 編譯器能夠編譯任何C程序,但是C和C+還是有一些小差別。例如C+增加了 C不具有的關(guān)鍵字。這些關(guān)鍵字能作為函數(shù)和變量的標(biāo)識(shí)符 在c程序中使用,盡管C+包含了所有的c,但顯然沒有任何C+S譯器能編譯 這樣的C程序。C程序員可以省略函數(shù)原型,而 C+不可以,一個(gè)不帶參數(shù)的 C函數(shù)原型必 須把void寫出來。而C+可以使用空參數(shù)列表。C+沖new和delete是對內(nèi)存分配的運(yùn)算符,取代了 C中的malloc和free。標(biāo)準(zhǔn)C+中的字符串類取代了 C標(biāo)準(zhǔn)C函數(shù)庫頭文件中的字符數(shù)組處理函 數(shù)。C+中用來做控制態(tài)輸入輸出的iostream類庫替代了標(biāo)準(zhǔn)C中的std

3、io函數(shù) 庫。C+中的try/catch/throw異常處理機(jī)制取代了標(biāo)準(zhǔn) C中的setjmp()和Iongjmp() 函數(shù)。二、關(guān)鍵字和變量C+4相對與C增加了一些關(guān)鍵字,如下:typename bool dynamic_cast mutable namespacestatic_cast using catch explicit newvirtual operator false private templatevolatile const protected this wchar_t const_cast public throw friend true reinterpret_cast

4、trybitor xor_e and_eq compl or_eqnot_eq bitand在C+沖還增加了 bool型變量和wchar_t型變量:布爾型變量是有兩種邏輯狀態(tài)的變量, 它包含兩個(gè)值: 真和假。 如果在表達(dá) 式中使用了布爾型變量,那么將根據(jù)變量值的真假而賦予整型值1 或 0。要把一個(gè)整型變量轉(zhuǎn)換成布爾型變量,如果整型值為0,則其布爾型值為假 ; 反之如果整型值為非 0,則其布爾型值為真。布兒型變量在運(yùn)行時(shí)通常用做標(biāo)志,比如進(jìn) 行邏輯測試以改變程序流程。#includeint main()bool flag;flag=true;if(flag) cout < return 0

5、;C+中還包括wchar_t數(shù)據(jù)類型,wchar_t也是字符類型,但是是那些寬度 超過 8 位的數(shù)據(jù)類型。許多外文字符集所含的數(shù)目超過 256 個(gè), char 字符類型 無法完全囊括。 wchar_t 數(shù)據(jù)類型一般為 16 位。標(biāo)準(zhǔn)C+的iostream類庫中包括了可以支持寬字符的類和對象。用wout替 代 cout 即可。#includeint main()wchar_t wc;wc='b'wout < wc='y'wout < wc='e'wout < return 0;說明一下:某些編譯器無法編譯該程序 ( 不支持該數(shù)據(jù)類

6、型 ) 。三、強(qiáng)制類型轉(zhuǎn)換 有時(shí)候,根據(jù)表達(dá)式的需要,某個(gè)數(shù)據(jù)需要被當(dāng)成另外的數(shù)據(jù)類型來處理, 這時(shí),就需要強(qiáng)制編譯器把變量或常數(shù)由聲明時(shí)的類型轉(zhuǎn)換成需要的類型。 為此, 就要使用強(qiáng)制類型轉(zhuǎn)換說明,格式如下:int* iptr=(int*) &table;表達(dá)式的前綴 (int*) 就是傳統(tǒng) C 風(fēng)格的強(qiáng)制類型轉(zhuǎn)換說明 (typecast) ,又可 稱為強(qiáng)制轉(zhuǎn)換說明 (cast) 。強(qiáng)制轉(zhuǎn)換說明告訴編譯器把表達(dá)式轉(zhuǎn)換成指定的類 型。有些情況下強(qiáng)制轉(zhuǎn)換是禁用的, 例如不能把一個(gè)結(jié)構(gòu)類型轉(zhuǎn)換成其他任何類 型。數(shù)字類型和數(shù)字類型、指針和指針之間可以相互轉(zhuǎn)換。當(dāng)然,數(shù)字類型和指 針類型也可以相

7、互轉(zhuǎn)換, 但通常認(rèn)為這樣做是不安全而且也是沒必要的。 強(qiáng)制類 型轉(zhuǎn)換可以避免編譯器的警告。long int el=123;short i=(int) el;float m=;int i=(int) m;上面兩個(gè)都是C風(fēng)格的強(qiáng)制類型轉(zhuǎn)換,C+還增加了一種轉(zhuǎn)換方式,比較一 下上面和下面這個(gè)書寫方式的不同:long int el=123;short i=int (el);float m=;int i=int (m);使用強(qiáng)制類型轉(zhuǎn)換的最大好處就是:禁止編譯器對你故意去做的事發(fā)出警 告。但是,利用強(qiáng)制類型轉(zhuǎn)換說明使得編譯器的類型檢查機(jī)制失效, 這不是明智 的選擇。通常,是不提倡進(jìn)行強(qiáng)制類型轉(zhuǎn)換的。除非

8、不可避免,如要調(diào)用 mallo c() 函數(shù)時(shí)要用的 void 型指針轉(zhuǎn)換成指定類型指針。四、標(biāo)準(zhǔn)輸入輸出流在C語言中,輸入輸出是使用語句scanf()和printf() 來實(shí)現(xiàn)的,而C+沖 是使用類來實(shí)現(xiàn)的。#in eludemai n()的聲明class 類名private:.public:.;2. 類的成員一般在C+啖中,所有定義的變量和函數(shù)都是類的成員。如果是變量,我們 就叫它數(shù)據(jù)成員如果是函數(shù),我們就叫它成員函數(shù)。3. 類成員的可見性private和public訪問控制符決定了成員的可見性。由一個(gè)訪問控制符設(shè) 定的可訪問狀態(tài)將一直持續(xù)到下一個(gè)訪問控制符出現(xiàn),或者類聲明的結(jié)束。私有成員

9、僅能被同一個(gè)類中的成員函數(shù)訪問,公有成員既可以被同一類中的成員函數(shù) 訪問,也可以被其他已經(jīng)實(shí)例化的類中函數(shù)訪問。當(dāng)然,這也有例外的情況,這 是以后要討論的友元函數(shù)。類中默認(rèn)的數(shù)據(jù)類型是private,結(jié)構(gòu)中的默認(rèn)類型是public。一般情況下, 變量都作為私有成員出現(xiàn),函數(shù)都作為公有成員出現(xiàn)。類中還有一種訪問控制符protected,叫保護(hù)成員,以后再說明。4. 初始化在聲明一個(gè)類的對象時(shí),可以用圓括號(hào)()包含一個(gè)初始化表??聪旅嬉粋€(gè)例子:#i ncludeclass Boxprivate:int height,width,depth;聯(lián)函數(shù)內(nèi)聯(lián)函數(shù)和普通函數(shù)的區(qū)別是:內(nèi)聯(lián)函數(shù)是在編譯過程中展

10、開的。 通常內(nèi)聯(lián) 函數(shù)必須簡短。定義類的內(nèi)聯(lián)函數(shù)有兩種方法: 一種和C語言一樣,在定義函數(shù) 時(shí)使用關(guān)鍵字inline 。如:in li ne int Box:volume()retur n height*width*depth;還有一種方法就是直接在類聲明的內(nèi)部定義函數(shù)體,而不是僅僅給出一個(gè)函數(shù)原型。我們把上面的函數(shù)簡化一下:#i ncludeclass Boxprivate:int height,width,depth;public:Box(i nt ht, int wd,i nt dp)height=ht;width=wd;depth=dp;Box();int volume()retur

11、n height*width*depth;;int mai n()Box thisbox(3,4,5);用默認(rèn)參數(shù)的構(gòu)造函數(shù)當(dāng)在聲明類對象時(shí),如果沒有指定參數(shù),則使用默認(rèn)參數(shù)來初始化對象#i ncludeclass Boxprivate:int height,width,depth;public:Box(i nt ht=2,i nt wd=3,i nt dp=4)height=ht;width=wd;depth=dp;Box();int volume()retur n height*width*depth;int mai n()Box thisbox(3,4,5); 認(rèn)構(gòu)造函數(shù)沒有參數(shù)或者參數(shù)

12、都是默認(rèn)值的構(gòu)造函數(shù)稱為默認(rèn)構(gòu)造函數(shù)。 如果你不提供 構(gòu)造函數(shù),編譯器會(huì)自動(dòng)產(chǎn)生一個(gè)公共的默認(rèn)構(gòu)造函數(shù), 這個(gè)構(gòu)造函數(shù)什么都不 做。如果至少提供一個(gè)構(gòu)造函數(shù),則編譯器就不會(huì)產(chǎn)生默認(rèn)構(gòu)造函數(shù)。3.重載構(gòu)造函數(shù)一個(gè)類中可以有多個(gè)構(gòu)造函數(shù)。這些構(gòu)造函數(shù)必須具有不同的參數(shù)表。在一 個(gè)類中需要接受不同初始化值時(shí),就需要編寫多個(gè)構(gòu)造函數(shù),但有時(shí)候只需要一 個(gè)不帶初始值的空的Box對象。#i ncludeclass Boxprivate:int height,width,depth;public:Box() 四、轉(zhuǎn)換函數(shù)的調(diào)用C+里調(diào)用轉(zhuǎn)換函數(shù)有三種形式:第一種是隱式轉(zhuǎn)換,例如編譯器需要一個(gè) Date對象,

13、而程序提供的是CustomDate對象,編譯器會(huì)自動(dòng)調(diào)用合適的轉(zhuǎn)換函 數(shù)。另外兩種都是需要在程序代碼中明確給出的顯式轉(zhuǎn)換。C+雖制類型轉(zhuǎn)換是一種,還有一種是顯式調(diào)用轉(zhuǎn)換構(gòu)造函數(shù)和成員轉(zhuǎn)換函數(shù)。下面的程序給出了三 中轉(zhuǎn)換形式:#i ncludeclass CustomDateint da, yr;CustomDate(i nt d=O,i nt y=0) da=d; yr=y;void display()cout< ;class Dateint mo, da, yr;public:Date(i nt m,i nt d,i nt y)mo=m; da=d; yr=y;operator Cus

14、tomDate();Date:operator CustomDate()static int dys=31,28,31,30,31,30,31,31,30,31,30,31;CustomDate cd(0,yr);for(i nt i=0;i +=da;return cd;int main()Date dt(11,17,89);CustomDate cd;cd = dt;();cd = (CustomDate) dt;();cd = CustomDate(dt);();return 0;五、轉(zhuǎn)換發(fā)生的情形上面的幾個(gè)例子都是通過不能類型對象之間的相互賦值來調(diào)用轉(zhuǎn)換函數(shù), 有幾種調(diào)用的可能:參數(shù)傳

15、遞初始化返回值表達(dá)式語句這些情況下,都有可能調(diào)用轉(zhuǎn)換函數(shù)。下面的程序不難理解,就不分析了。#i ncludeclass CustomDateint da, yr;CustomDate() CustomDate(i nt d,i nt y) da=d; yr=y;void display()cout< ;class Dateint mo, da, yr;public:Date(i nt m,i nt d,i nt y) mo=m; da=d; yr=y; operator CustomDate();Date:operator CustomDate()static int dys=31,28

16、,31,30,31,30,31,31,30,31,30,31;CustomDate cd(0,yr);for (int i=0;i +=da;return cd;class TesterCustomDate cd;public:explicit Tester(CustomDate c) cd=c; void display。 (); ;void dispdate(CustomDate cd)();CustomDate rtn date()Date dt(9,11,1);return dt;int mai n()Date dt(12,24,3);CustomDate cd;cd = dt;();

17、dispdate(dt);Tester ts(dt);();cd = rtn date();();return 0;六、顯式構(gòu)造函數(shù)注意上面Tester類的構(gòu)造函數(shù)前面有一個(gè)explicit修飾符。如果不加上這個(gè)關(guān)鍵字,那么在需要把CustomDate對象轉(zhuǎn)換成Tester對象時(shí),編譯器會(huì)把該 函數(shù)當(dāng)作轉(zhuǎn)換構(gòu)造函數(shù)來調(diào)用。但是有時(shí)候,并不想把這種只有一個(gè)參數(shù)的構(gòu)造 函數(shù)用于轉(zhuǎn)換目的,而僅僅希望用它來顯式地初始化對象,此時(shí),就需要在構(gòu)造函數(shù)前加explicit 。如果在聲明了 Tester對象以后使用了下面的語句將導(dǎo)致一 個(gè)錯(cuò)誤:ts=jd; /error這個(gè)錯(cuò)誤說明,雖然Tester類中有一個(gè)以Date型變量為參數(shù)的構(gòu)造函數(shù), 編譯器卻不會(huì)把它看作是從 Date到Tester的轉(zhuǎn)換構(gòu)造函數(shù),因?yàn)樗穆暶髦邪?含了 explicit 修飾符。七、表達(dá)式內(nèi)部的轉(zhuǎn)換在表達(dá)式內(nèi)部,如果發(fā)現(xiàn)某個(gè)類型和需要的不一致, 就會(huì)發(fā)生錯(cuò)誤。數(shù)字類 型的轉(zhuǎn)換是很簡單,這里就不舉例了。下面的程序是把 Date對象轉(zhuǎn)換成長整型 值。#i ncludeclass Dateint mo, da, yr;public:Date(i nt m,i nt d,i nt y)mo=m; da=d; yr=y;operator Ion g();;Date:operator Ion g()static int dys=3

溫馨提示

  • 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ǔ)空間,僅對用戶上傳內(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

提交評論