




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、2017年全國計算機二級C+考試復習知識點匯總、C+ 既述( 一 ) 發展歷史言。1980年, Bjarne Stroustrup 博士開始著手創建一種模擬語言, 能夠具有面 向對象的程序設計特色。在當時,面向對象編程還是一個比較新的理念, Strou strup博士并不是從頭開始設計新語言,而是在 C語言的基礎上進行創建。這就 是C+語1985年,C+開始在外面慢慢流行。經過多年的發展,C+已經有了多個版本。為次,ANSI和ISO的聯合委員會于1989年著手為C+制定標準。1994年2 月,該委員會出版了第一份非正式草案,1998年正式推出了 C+的國際標準。(二) C 和 C+C+是 C的
2、超集,也可以說C是C+的子集,因為C先出現。按常理說,C+ 編譯器能夠編譯任何C程序,但是C和C+還是有一些小差別。例如C+垃曾加了 C不具有的關鍵字。這些關鍵字能作為函數和變量的標識符 在C程序中使用,盡管C+包含了所有的C,但顯然沒有任何C+編譯器能編譯 這樣的C程序。C程序員可以省略函數原型,而 C+不可以,一個不帶參數的C函數原型必 須把void寫出來。而C+可以使用空參數列表。C+沖new和delete是對內存分配的運算符,取代了 C中的malloc和free 。標準C+中的字符串類取代了 C標準C函數庫頭文件中的字符數組處理函數。C+中用來做控制態輸入輸出的iostream類庫替代
3、了標準C中的stdio函數庫。C+中的try/catch/throw異常處理機制取代了標準 C中的setjmp()和longjmp() 函數。二、關鍵字和變量C+相對與C增加了一些關鍵字,如下:typename bool dynamic_cast mutable namespacestatic_cast using catch explicit newvirtual operator false private templatevolatile const protected this wchar_tconst_cast public throw friend truereinterpret_
4、cast trybitor xor_e and_eq compl or_eqnot_eq bitand在C+沖還增加了 bool型變量和wchar_t型變量:布爾型變量是有兩種邏輯狀態的變量, 它包含兩個值: 真和假。 如果在表達 式中使用了布爾型變量,那么將根據變量值的真假而賦予整型值1或 0。要把一個整型變量轉換成布爾型變量,如果整型值為 0,則其布爾型值為假 ; 反之如果 整型值為非 0,則其布爾型值為真。布兒型變量在運行時通常用做標志,比如進 行邏輯測試以改變程序流程。#includeint main()bool flag;flag=true;if(flag) cout < re
5、turn 0;C+中還包括wchar_t數據類型,wchar_t也是字符類型,但是是那些寬度 超過 8 位的數據類型。許多外文字符集所含的數目超過256 個, char 字符類型無法完全囊括。 wchar_t 數據類型一般為 16 位。標準C+勺iostream類庫中包括了可以支持寬字符的類和對象。用wout替 代 cout 即可。#includeint main()wchar_t wc;wc='b'wout < wc='y'wout < wc='e'wout < return 0;說明一下:某些編譯器無法編譯該程序 ( 不支持
6、該數據類型 ) 。三、強制類型轉換有時候,根據表達式的需要,某個數據需要被當成另外的數據類型來處理, 這時,就需要強制編譯器把變量或常數由聲明時的類型轉換成需要的類型。 為此, 就要使用強制類型轉換說明,格式如下:int* iptr=(int*) &table;表達式的前綴(int*)就是傳統C風格的強制類型轉換說明(typecast),又可 稱為強制轉換說明 (cast) 。強制轉換說明告訴編譯器把表達式轉換成指定的類 型。有些情況下強制轉換是禁用的, 例如不能把一個結構類型轉換成其他任何類 型。數字類型和數字類型、指針和指針之間可以相互轉換。當然,數字類型和指 針類型也可以相互轉換
7、, 但通常認為這樣做是不安全而且也是沒必要的。 強制類 型轉換可以避免編譯器的警告。long int el=123;short i=(int) el;float m=;int i=(int) m;上面兩個都是C風格的強制類型轉換,C+還增加了一種轉換方式,比較一 下上面和下面這個書寫方式的不同:long int el=123;short i=int (el);float m=;int i=int (m);使用強制類型轉換的最大好處就是:禁止編譯器對你故意去做的事發出警 告。但是,利用強制類型轉換說明使得編譯器的類型檢查機制失效, 這不是明智 的選擇。通常,是不提倡進行強制類型轉換的。除非不可避
8、免,如要調用 mallo c() 函數時要用的 void 型指針轉換成指定類型指針。四、標準輸入輸出流在C語言中,輸入輸出是使用語句scanfO和printfO來實現的,而C+沖是使用類來實現的。#in eludemai n()的聲明class 類名p rivate:.p ublic:.;2.類的成員一般在C+啖中,所有定義的變量和函數都是類的成員。如果是變量,我們 就叫它數據成員如果是函數,我們就叫它成員函數。3.類成員的可見性private和public訪問控制符決定了成員的可見性。由一個訪問控制符設 定的可訪問狀態將一直持續到下一個訪問控制符出現,或者類聲明的結束。私有成員僅能被同一個類
9、中的成員函數訪問,公有成員既可以被同一類中的成員函數 訪問,也可以被其他已經實例化的類中函數訪問。當然,這也有例外的情況,這 是以后要討論的友元函數。類中默認的數據類型是private,結構中的默認類型是public。一般情況下, 變量都作為私有成員出現,函數都作為公有成員出現。類中還有一種訪問控制符Protected,叫保護成員,以后再說明。4.初始化在聲明一個類的對象時,可以用圓括號()包含一個初始化表。看下面一個例子:#in cludeclass Boxp rivate:int height,width,de pth;聯函數內聯函數和普通函數的區別是:內聯函數是在編譯過程中展開的。 通常
10、內聯 函數必須簡短。定義類的內聯函數有兩種方法:一種和C語言一樣,在定義函數 時使用關鍵字inline 。如:inline int Box:volume()retu rn height*width*de pth;還有一種方法就是直接在類聲明的內部定義函數體, 而不是僅僅給出一個函 數原型。我們把上面的函數簡化一下:#in eludeclass Boxp rivate:int height,width,de pth;p ublic:Box(i nt ht, int wd,i nt dp)height=ht;width=wd;dep th=d p;Box();int volume()retu rn
11、 height*width*de pth;;int main()Box thisbox(3,4,5);用默認參數的構造函數當在聲明類對象時,如果沒有指定參數,則使用默認參數來初始化對象。#in eludeclass Boxp rivate:int height,width,de pth;p ublic:Box(i nt ht=2,i nt wd=3,i nt dp=4)height=ht;width=wd;dep th=d p;Box();int volume()retu rn height*width*de pth;int main()Box thisbox(3,4,5);認構造函數沒有參數
12、或者參數都是默認值的構造函數稱為默認構造函數。如果你不提供 構造函數,編譯器會自動產生一個公共的默認構造函數, 這個構造函數什么都不 做。如果至少提供一個構造函數,則編譯器就不會產生默認構造函數。3.重載構造函數一個類中可以有多個構造函數。這些構造函數必須具有不同的參數表。在一 個類中需要接受不同初始化值時,就需要編寫多個構造函數,但有時候只需要一 個不帶初始值的空的Box對象。#in eludeclass Boxp rivate:int height,width,de pth;p ublic:Box() 四、轉換函數的調用C+里調用轉換函數有三種形式:第一種是隱式轉換,例如編譯器需要一個 D
13、ate對象,而程序提供的是CustomDate對象,編譯器會自動調用合適的轉換函 數。另外兩種都是需要在程序代碼中明確給出的顯式轉換。C+雖制類型轉換是一種,還有一種是顯式調用轉換構造函數和成員轉換函數。下面的程序給出了三 中轉換形式:#in cludeclass CustomDatep ublic:int da, yr;CustomDate(i nt d=O,i nt y=0) da=d; yr=y;void dis playOcout< ;class Dateint mo, da, yr;p ublic:Date(i nt m,i nt d,i nt y)mo=m; da=d; yr
14、=y;op erator CustomDate();Date:o perator 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;五、轉換發生的情形上面的幾個例子都是通過不能類型對象之間的相互賦值來調用轉
15、換函數, 有幾種調用的可能:參數傳遞初始化返回值表達式語句這些情況下,都有可能調用轉換函數。F面的程序不難理解,就不分析了。#in cludeclass CustomDatep ublic:int da, yr;CustomDateO CustomDate(i nt d,i nt y) da=d; yr=y;void dis playOcout< ;class Dateint mo, da, yr;p ublic:Date(i nt m,i nt d,i nt y) mo=m; da=d; yr=y; op erator CustomDateO;Date:o perator Custom
16、DateOstatic 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;CustomDate cd;class Testerp ublic:exp licit Tester(CustomDate c) cd=c; void dis playO (); ;void dis pdate(CustomDate cd)();CustomDate rtn date()Date dt(9,11,1);return dt;int main()Date dt(12,24
17、,3);CustomDate cd;cd = dt;();dis pdate(dt);Tester ts(dt);();cd = rtn date();();return 0;六、顯式構造函數注意上面Tester類的構造函數前面有一個explicit修飾符。如果不加上這個關鍵字,那么在需要把CustomDate對象轉換成Tester對象時,編譯器會把該 函數當作轉換構造函數來調用。但是有時候,并不想把這種只有一個參數的構造 函數用于轉換目的,而僅僅希望用它來顯式地初始化對象,此時,就需要在構造函數前加explicit 。如果在聲明了 Tester對象以后使用了下面的語句將導致一 個錯誤:ts=
18、jd; /error這個錯誤說明,雖然Tester類中有一個以Date型變量為參數的構造函數, 編譯器卻不會把它看作是從 Date到Tester的轉換構造函數,因為它的聲明中包 含了 explicit 修飾符。七、表達式內部的轉換在表達式內部,如果發現某個類型和需要的不一致,就會發生錯誤。數字類型的轉換是很簡單,這里就不舉例了。下面的程序是把Date對象轉換成長整型值。#in eludeclass Dateint mo, da, yr;p ublic:Date(i nt m,i nt d,i nt y)mo=m; da=d; yr=y;op erator Ion g();Date:o perator Ion g()static int dys
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 定考神針七下數學試卷
- 豐城九中小升初數學試卷
- 高考刷題數學試卷
- 豐臺區三模數學試卷
- 肛瘺護理常規課件
- 豐臺三上人教數學試卷
- 東華考試數學試卷
- T43648-2024主要樹種立木生物量模型與碳計量參數
- 肝功能不全的病因鑒別與處理
- 2025年貴州鐘山區婦幼保健院招聘編外專業技術人員(6人)筆試歷年專業考點(難、易錯點)附帶答案詳解
- 4我們的公共生活 第一課時 說課稿-2023-2024學年道德與法治五年級下冊統編版
- 《壓力容器培訓》課件
- 2025年內蒙古能源建設投資集團招聘筆試參考題庫含答案解析
- 大數據與會計專業實踐報告2500字范文
- 供應商評鑒管理辦法課件
- 通站(2017)8012 鐵路站場排水構筑物
- UL2251標準中文版-2017電動汽車的插頭插座和耦合器UL中文版標準
- 網絡安全策略優化方案
- 勞動與社會保障題庫(含答案)
- 串標舉報信范文
- GB/T 4074.7-2024繞組線試驗方法第7部分:測定漆包繞組線溫度指數的試驗方法
評論
0/150
提交評論