天天看點

C/C++的差別在哪裡?

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++ 更注重程式的整體設計,這就是常說的面向過程和面向對象

繼續閱讀