全國計算機二級C++考試復習知識點匯總_第1頁
全國計算機二級C++考試復習知識點匯總_第2頁
全國計算機二級C++考試復習知識點匯總_第3頁
免費預覽已結束,剩余10頁可下載查看

下載本文檔

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

文檔簡介

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

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

3、io函數(shù) 庫。C+中的try/catch/throw異常處理機制取代了標準 C中的setjmp()和Iongjmp() 函數(shù)。二、關鍵字和變量C+4相對與C增加了一些關鍵字,如下: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)的變量, 它包含兩個值: 真和假。 如果在表達 式中使用了布爾型變量,那么將根據(jù)變量值的真假而賦予整型值1 或 0。要把一個整型變量轉(zhuǎn)換成布爾型變量,如果整型值為0,則其布爾型值為假 ; 反之如果整型值為非 0,則其布爾型值為真。布兒型變量在運行時通常用做標志,比如進 行邏輯測試以改變程序流程。#includeint main()bool flag;flag=true;if(flag) cout < return 0

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

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

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

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

9、僅能被同一個類中的成員函數(shù)訪問,公有成員既可以被同一類中的成員函數(shù) 訪問,也可以被其他已經(jīng)實例化的類中函數(shù)訪問。當然,這也有例外的情況,這 是以后要討論的友元函數(shù)。類中默認的數(shù)據(jù)類型是private,結構中的默認類型是public。一般情況下, 變量都作為私有成員出現(xiàn),函數(shù)都作為公有成員出現(xiàn)。類中還有一種訪問控制符protected,叫保護成員,以后再說明。4. 初始化在聲明一個類的對象時,可以用圓括號()包含一個初始化表??聪旅嬉粋€例子:#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ù) 時使用關鍵字inline 。如:in li ne int Box:volume()retur n height*width*depth;還有一種方法就是直接在類聲明的內(nèi)部定義函數(shù)體,而不是僅僅給出一個函數(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);用默認參數(shù)的構造函數(shù)當在聲明類對象時,如果沒有指定參數(shù),則使用默認參數(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); 認構造函數(shù)沒有參數(shù)或者參數(shù)

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

13、而程序提供的是CustomDate對象,編譯器會自動調(diào)用合適的轉(zhuǎn)換函 數(shù)。另外兩種都是需要在程序代碼中明確給出的顯式轉(zhuǎn)換。C+雖制類型轉(zhuǎn)換是一種,還有一種是顯式調(diào)用轉(zhuǎn)換構造函數(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ā)生的情形上面的幾個例子都是通過不能類型對象之間的相互賦值來調(diào)用轉(zhuǎn)換函數(shù), 有幾種調(diào)用的可能:參數(shù)傳

15、遞初始化返回值表達式語句這些情況下,都有可能調(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;六、顯式構造函數(shù)注意上面Tester類的構造函數(shù)前面有一個explicit修飾符。如果不加上這個關鍵字,那么在需要把CustomDate對象轉(zhuǎn)換成Tester對象時,編譯器會把該 函數(shù)當作轉(zhuǎn)換構造函數(shù)來調(diào)用。但是有時候,并不想把這種只有一個參數(shù)的構造 函數(shù)用于轉(zhuǎn)換目的,而僅僅希望用它來顯式地初始化對象,此時,就需要在構造函數(shù)前加explicit 。如果在聲明了 Tester對象以后使用了下面的語句將導致一 個錯誤:ts=jd; /error這個錯誤說明,雖然Tester類中有一個以Date型變量為參數(shù)的構造函數(shù), 編譯器卻不會把它看作是從 Date到Tester的轉(zhuǎn)換構造函數(shù),因為它的聲明中包 含了 explicit 修飾符。七、表達式內(nèi)部的轉(zhuǎn)換在表達式內(nèi)部,如果發(fā)現(xiàn)某個類型和需要的不一致, 就會發(fā)生錯誤。數(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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論