語法層次、高級特性、使用場景、效率
(1)運行機制上:
C是面向過程編程語言,C++是面向對象編程語言。
(2)適用方向:
C語言適合程序體積小、運行效率高的場合,如嵌入式等更接近底層的環境;
C++適合更上層、更復雜的場合,以及一些具體業務的場景。
(3)編程語法上:
C++具有封裝、繼承、多態三種特性;
C語言不支持重載,C++支持重載;
C++相比C語言增加了許多類型安全的功能,如強制類型轉換;
C++支持範式編程,如模板類、函數模板等;
(4)C++對C的增強:
標準C++引入了關鍵字namespace,可以更好的控制標識符的作用域;
實用性增強:C語言中變量必須在作用域開始的位置定義,C++可以隨用隨定義;
變量檢測增強:C語言中可以定義多個同名全局變量,且都會鏈接到同一個地址,C++中不允許重複定義多個同名變量;
struct類型增強:C語言中認爲struct爲一組變量的集合,並不認定爲新的數據類型,C++中認爲是新的數據類型;
C語言函數不指定返回值類型就默認爲int,C++中所有的變量和函數必須顯示的指明,C語言中的默認類型不合法;
新增bool類型:C語言中真用非0表示,假用0表示,C++中新增bool關鍵字,真爲true,假爲false,bool類型佔據1B;
三目運算符增強:C語言中三目運算符返回變量值,不可以作爲左值,C++中三目運算符返回變量本身,變量本身非常量時可以作爲左值;
const增強:C語言中const可以說是假的const,有自己的存儲空間,可以通過指針去修改值,C++中const是真正的常量,在編譯期間就已經確定了值,通常不爲普通的const變量分配存儲空間,而保存在符號表中。
真正的enum:C語言中枚舉本質是整形,可以用任意整數賦值,C++中枚舉是變量,只能用枚舉出的參數進行賦值。
(5)C++對C的擴展:
引用:C++增加了引用,作爲以定義變量的別名。引用的本質是常指針Type*const name;
inline:C++提供了inline函數,實現真正的內嵌,編譯器直接將函數嵌入只函數調用地方;
C++提供了默認參數與佔位參數;
C++提供了函數重載功能。