Q:C 和 C++ 的差別是什麼?
A:C++ 在設計之初可以看作是 C 的超集,但是随着C++的發展,C 和 C++ 現在已經發展成了兩種不同的語言,但是它們的聯系還是很密切的:
+ 首先 C 和 C++ 在基礎文法上差别不大。
這裡說的基礎文法說的是文法細節,C++ 能支援絕大多數的 C 的基礎文法。
+ 往上一層,C++ 比 C 多出的一些文法和關鍵字
1、兩者頭檔案的不同以及名稱空間的聲明不同;
2、新增關鍵字 new/delete;
3、新增關鍵字 auto、explicit,顯示和隐式轉換概念。
4、新增引用傳遞,實際上是指針的封裝實作;
+ 重載、虛函數概念
+ 類、對象和繼承,完全獨立于 C 的概念
對象是類的實體,而這個實體包含了各種變量和函數;
有了類對象就有了構造函數、析構函數、複制構造函數以及友元函數;
有類就有權限和繼承,私有、公有、單繼承、多繼承、虛繼承、父子類、基類派生類等
+ C++ 支援範式程式設計,異常機制、元程式設計、STL标準庫等獨立特性
+ 設計思想和引用場景的差別
C 出于對執行效率和記憶體占用的考慮使它趨于底層,如核心驅動和作業系統,特點是越精簡越高效。
C++ 設計之初的動機就是把 C 繁雜的實作過程抽象為類型并且進行執行個體化管理,相比于 C,更加開放和自由,利于代碼維護和管理,适合做大型軟體。
C 更注重邏輯實作, C++ 更注重程式的整體設計,這就是常說的面向過程和面向對象