點(diǎn)擊查看:2016年計算機二級考試《C++》復習資料匯總
關(guān)鍵字和變量等
一、C++概述
(一) 發(fā)展歷史
1980年,Bjarne Stroustrup博士開(kāi)始著(zhù)手創(chuàng )建一種模擬語(yǔ)言,能夠具有面向對象的程序設計特色。在當時(shí),面向對象編程還是一個(gè)比較新的理念,Stroustrup博士并不是從頭開(kāi)始設計新語(yǔ)言,而是在C語(yǔ)言的基礎上進(jìn)行創(chuàng )建。這就是C++語(yǔ)言。
1985年,C++開(kāi)始在外面慢慢流行。經(jīng)過(guò)多年的發(fā)展,C++已經(jīng)有了多個(gè)版本。為次,ANSI和ISO的聯(lián)合委員會(huì )于1989年著(zhù)手為C++制定標準。1994年2月,該委員會(huì )出版了第一份非正式草案,1998年正式推出了C++的國際標準。
(二) C和C++
C++是C的超集,也可以說(shuō)C是C++的子集,因為C先出現。按常理說(shuō),C++編譯器能夠編譯任何C程序,但是C和C++還是有一些小差別。
例如C++增加了C不具有的關(guān)鍵字。這些關(guān)鍵字能作為函數和變量的標識符在C程序中使用,盡管C++包含了所有的C,但顯然沒(méi)有任何C++編譯器能編譯這樣的C程序。
C程序員可以省略函數原型,而C++不可以,一個(gè)不帶參數的C函數原型必須把void寫(xiě)出來(lái)。而C++可以使用空參數列表。
C++中new和delete是對內存分配的運算符,取代了C中的malloc和free。
標準C++中的字符串類(lèi)取代了C標準C函數庫頭文件中的字符數組處理函數。
C++中用來(lái)做控制態(tài)輸入輸出的iostream類(lèi)庫替代了標準C中的stdio函數庫。
C++中的try/catch/throw異常處理機制取代了標準C中的setjmp()和longjmp()函數。
二、關(guān)鍵字和變量
C++相對與C增加了一些關(guān)鍵字,如下:
typename bool dynamic_cast mutable namespace
static_cast using catch explicit new
virtual operator false private template
volatile const protected this wchar_t
const_cast public throw friend true
reinterpret_cast try
bitor xor_e and_eq compl or_eq
not_eq bitand
在C++中還增加了bool型變量和wchar_t型變量:
布爾型變量是有兩種邏輯狀態(tài)的變量,它包含兩個(gè)值:真和假。如果在表達式中使用了布爾型變量,那么將根據變量值的真假而賦予整型值1或0。要把一個(gè)整型變量轉換成布爾型變量,如果整型值為0,則其布爾型值為假;反之如果整型值為非0,則其布爾型值為真。布兒型變量在運行時(shí)通常用做標志,比如進(jìn)行邏輯測試以改變程序流程。
#include iostream.h
int main()
{
bool flag;
flag=true;
if(flag) cout < return 0;
}
C++中還包括wchar_t數據類(lèi)型,wchar_t也是字符類(lèi)型,但是是那些寬度超過(guò)8位的數據類(lèi)型。許多外文字符集所含的數目超過(guò)256個(gè),char字符類(lèi)型無(wú)法完全囊括。wchar_t數據類(lèi)型一般為16位。
標準C++的iostream類(lèi)庫中包括了可以支持寬字符的類(lèi)和對象。用wout替代cout即可。
#include iostream.h
int main()
{
wchar_t wc;
wc='b';
wout < wc='y';
wout < wc='e';
wout < return 0;
}
說(shuō)明一下:某些編譯器無(wú)法編譯該程序(不支持該數據類(lèi)型)。
三、強制類(lèi)型轉換
有時(shí)候,根據表達式的需要,某個(gè)數據需要被當成另外的數據類(lèi)型來(lái)處理,這時(shí),就需要強制編譯器把變量或常數由聲明時(shí)的類(lèi)型轉換成需要的類(lèi)型。為此,就要使用強制類(lèi)型轉換說(shuō)明,格式如下:
int* iptr=(int*) &table;
表達式的前綴(int*)就是傳統C風(fēng)格的強制類(lèi)型轉換說(shuō)明(typecast),又可稱(chēng)為強制轉換說(shuō)明(cast)。強制轉換說(shuō)明告訴編譯器把表達式轉換成指定的類(lèi)型。有些情況下強制轉換是禁用的,例如不能把一個(gè)結構類(lèi)型轉換成其他任何類(lèi)型。數字類(lèi)型和數字類(lèi)型、指針和指針之間可以相互轉換。當然,數字類(lèi)型和指針類(lèi)型也可以相互轉換,但通常認為這樣做是不安全而且也是沒(méi)必要的。強制類(lèi)型轉換可以避免編譯器的警告。
long int el=123;
short i=(int) el;
float m=34.56;
int i=(int) m;
上面兩個(gè)都是C風(fēng)格的強制類(lèi)型轉換,C++還增加了一種轉換方式,比較一下上面和下面這個(gè)書(shū)寫(xiě)方式的不同:
long int el=123;
short i=int (el);
float m=34.56;
int i=int (m);
使用強制類(lèi)型轉換的最大好處就是:禁止編譯器對你故意去做的事發(fā)出警告。但是,利用強制類(lèi)型轉換說(shuō)明使得編譯器的類(lèi)型檢查機制失效,這不是明智的選擇。通常,是不提倡進(jìn)行強制類(lèi)型轉換的。除非不可避免,如要調用malloc()函數時(shí)要用的void型指針轉換成指定類(lèi)型指針。
相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |