1、出現時間不同
C++是C的超集,也可以說C是C++的子集,因為C先出現。按常理說,C++編譯器能夠編譯任何C程式,但是C和C++還是有一些小差別。
例如C++增加了C不具有的關鍵字。這些關鍵字能作為函式和變數的識別符號在C程式中使用,儘管C++包含了所有的C,但顯然沒有任何C++編譯器能編譯這樣的C程式。
2、C程式可以省略函式原型,而C++不可以
一個不帶引數的C函式原型必須把void寫出來。而C++可以使用空引數列表。C++中new和delete是對記憶體分配的運算子,取代了C中的malloc和free。標準C++中的字串類取代了C標準C函式庫標頭檔案中的字元陣列處理函式(C中沒有字串型別)。
C++中用來做控制態輸入輸出的iostream類庫替代了標準C中的stdio函式庫。C++中的try/catch/throw異常處理機制取代了標準C中的setjmp()和longjmp()函式。
3、關鍵字和變數不同
在C++中還增加了bool型變數和wchar_t型變數:布林型變數是有兩種邏輯狀態的變數,它包含兩個值:真和假。如果在表示式中使用了布林型變數。
那麼將根據變數值的真假而賦予整型值1或0。要把一個整型變數轉換成布林型變數,如果整型值為0,則其布林型值為假;反之如果整型值為非0,則其布林型值為真。布兒型變數在執行時通常用做標誌,比如進行邏輯測試以改變程式流程。
C++中還包括wchar_tt資料型別,wchar_t也是字元型別,但是是那些寬度超過8位的資料型別。許多外文字符集所含的數目超過256個,char字元型別無法完全囊括。wchar_t資料型別一般為16位。
標準C++的iostream類庫中包括了可以支援寬字元的類和物件。用wout替代cout即可。
4、強制型別轉換不同
有時候,根據表示式的需要,某個資料需要被當成另外的資料型別來處理,這時,就需要強制編譯器把變數或常數由宣告時的型別轉換成需要的型別。為此,就要使用強制型別轉換說明,格式如下:int iptr=(int) &table;
表示式的字首(int*)就是傳統C風格的強制型別轉換說明(typecast),又可稱為強制轉換說明(cast)。強制轉換說明告訴編譯器把表示式轉換成指定的型別。
有些情況下強制轉換是禁用的,例如不能把一個結構型別轉換成其他任何型別。數字型別和數字型別、指標和指標之間可以相互轉換。當然,數字型別和指標型別也可以相互轉換,但通常認為這樣做是不安全而且也是沒必要的。強制型別轉換可以避免編譯器的警告。
5、函式過載
在C++中,允許有相同的函式名,不過它們的引數型別不能完全相同,這樣這些函式就可以相互區別開來。而這在C語言中是不允許的。
1、出現時間不同
C++是C的超集,也可以說C是C++的子集,因為C先出現。按常理說,C++編譯器能夠編譯任何C程式,但是C和C++還是有一些小差別。
例如C++增加了C不具有的關鍵字。這些關鍵字能作為函式和變數的識別符號在C程式中使用,儘管C++包含了所有的C,但顯然沒有任何C++編譯器能編譯這樣的C程式。
2、C程式可以省略函式原型,而C++不可以
一個不帶引數的C函式原型必須把void寫出來。而C++可以使用空引數列表。C++中new和delete是對記憶體分配的運算子,取代了C中的malloc和free。標準C++中的字串類取代了C標準C函式庫標頭檔案中的字元陣列處理函式(C中沒有字串型別)。
C++中用來做控制態輸入輸出的iostream類庫替代了標準C中的stdio函式庫。C++中的try/catch/throw異常處理機制取代了標準C中的setjmp()和longjmp()函式。
3、關鍵字和變數不同
在C++中還增加了bool型變數和wchar_t型變數:布林型變數是有兩種邏輯狀態的變數,它包含兩個值:真和假。如果在表示式中使用了布林型變數。
那麼將根據變數值的真假而賦予整型值1或0。要把一個整型變數轉換成布林型變數,如果整型值為0,則其布林型值為假;反之如果整型值為非0,則其布林型值為真。布兒型變數在執行時通常用做標誌,比如進行邏輯測試以改變程式流程。
C++中還包括wchar_tt資料型別,wchar_t也是字元型別,但是是那些寬度超過8位的資料型別。許多外文字符集所含的數目超過256個,char字元型別無法完全囊括。wchar_t資料型別一般為16位。
標準C++的iostream類庫中包括了可以支援寬字元的類和物件。用wout替代cout即可。
4、強制型別轉換不同
有時候,根據表示式的需要,某個資料需要被當成另外的資料型別來處理,這時,就需要強制編譯器把變數或常數由宣告時的型別轉換成需要的型別。為此,就要使用強制型別轉換說明,格式如下:int iptr=(int) &table;
表示式的字首(int*)就是傳統C風格的強制型別轉換說明(typecast),又可稱為強制轉換說明(cast)。強制轉換說明告訴編譯器把表示式轉換成指定的型別。
有些情況下強制轉換是禁用的,例如不能把一個結構型別轉換成其他任何型別。數字型別和數字型別、指標和指標之間可以相互轉換。當然,數字型別和指標型別也可以相互轉換,但通常認為這樣做是不安全而且也是沒必要的。強制型別轉換可以避免編譯器的警告。
5、函式過載
在C++中,允許有相同的函式名,不過它們的引數型別不能完全相同,這樣這些函式就可以相互區別開來。而這在C語言中是不允許的。