-
1 # MY的日常
-
2 # 方外靜軒
C 的最大優點是編譯後代碼執行效率接近彙編程式,速度快,資源佔用少。因此早期很多重要應用軟體、支撐軟體甚至系統軟體是用 C 編寫。雖然比彙編程式稍差,但開發和維護成本要低得多。C++ 繼承了 C 的這一優點,並大大擴充了功能,因此在 Unix,Linux, Windows, Mac OS 這些系統下得到廣泛應用,甚至作業系統本身都是用 C++ 編寫,只有對效率最敏感的底層處理才用彙編程式。
C++ 對 C 做了很多擴充,最大的改變是引入 OOP(面向物件程式設計)概念。OOP 也是以函式為基礎,但相關函式圍繞特定任務封裝成一個整體。OOP 的中心是資料。開發者要首先定義出資料結構,然後選擇資料的處理方法。因此在 OOP 中函式被稱為方法(method)。資料和用以處理資料的方法封裝成一體形成物件(object)。OOP 的物件可以繼承和擴充套件。例如,有物件 A 作為基礎物件,物件 B 和 C 都繼承了物件 A,並分別擴充了不同功能,B 和 C 就是物件 A 的派生物件。還可以從 B 和 C 派生出更上層的物件。這樣一層層形成樹狀結構,建立一個強大的處理體系。不難想見,這樣非常有利於整個系統的合理構思,同時顯著提高開發和維護效率。這樣寫程式就好像在製造零部件。理想狀態下,程式可以由零部件組裝起來。
現在很多語言都引入了 OOP 概念,有些甚至模仿 C 和 C++ 的表達方式,如 Javascript, PHP, Java,C# 這些。但這些語言出於安全需求或跨平臺需求,全都缺少 C++ 的底層處理功能,例如都不能直接訪問記憶體空間。所以寫系統軟體仍然離不開 C++。在 Windows 環境下,和 C++ 最接近的是以 Pascal 為語言藍本的 Delphi。二者的功能幾乎可以相互取代。Delphi 編譯速度比 C++ 高出很多,但由於歷史原因,其影響力比 C++ 要小得多。
-
3 # 電源漫談
C++是在C語言的基礎上開發的一種通用程式語言。所以C++可以直接使用C語言的語法及標頭檔案。反過來C則不可完全用C++的語法。C++語言在變數、輸入輸出、引用型別、堆疊記憶體申請、結構體上都與C語言都存在差異,同時C++新增加了過載,類之類的實現面向物件程式設計。
1、 變數
C++中增加了bool布林型別,只佔1個位元組記憶體空間。
C中則沒有。C 中要用int 型別定義,佔空間較多,不方便。
2、 輸入輸出區別
C語言用scanf()、printf()函式作入輸入、輸出函式。用法較複雜。
C++則用cin、cout作為輸入、輸出。用法較簡單,不易出錯。
3、 堆疊記憶體申請
C語言用malloc申請記憶體空間,用free釋放。C++則用new申請,用delete釋放。
4、 引用形參
C++中函式可以使形參,C中則沒有此用法。
5、 函式過載
C++中函式名可以相同,只要引數個數、類形不一樣則可。在C中就不可以。
6、 結構體
C++中對struct結構體進行了擴充,它已經不再只是一個包含不同資料型別的資料結構了。它可以包含成員函式、能繼承、能實現多型。這使得C++可以實現面向物件程式設計。C++中用class關鍵定義類。
-
4 # 算命157
一些區別:
C: 編寫C程式碼,寫出來的是C程式碼。
C++:編寫C++程式碼,寫出來的是還是C程式碼。
C:執行時記憶體錯誤。
C++:看起來像是執行時記憶體錯誤。
C:編譯器警告你。
C++:編譯器警告它自己。
C:1天學會,1年掌握。
C++:1年學會,-1年掌握。
C:Goto有害。
C++:C++可以無害。
C:入門語言。
C++:出門語言。
C:面向過程。
C++:面向C++。
C:一切皆指標。
C++:一切皆編譯器。
C:爛程式碼能輕易編過,也能輕易調過。
C++:爛程式碼不能輕易編過,也不能輕易調過。
C:說精通的可能精通。
C++:說精通的肯定不精通。
-
5 # 潛龍在野394
C++是一個誘餌,誘使那些貪圖所謂方便的程式設計師為了一點小利遠離程式的本質,使所謂的上層程式設計師與底層程式設計師相互依賴,程式設計師與硬體工程師又相互依賴,不能獨立完成工作,最終都被資本奴役。在我看來這些技術本質都是相通的,之間的差異完全是人為造成的,C++的那些所謂的類,封裝,用C語言完全可以實現,然後一勞永逸地呼叫,搞懂了C++類的C語言實現原理才算真正懂得了C++的類,真的弄懂了類的實現,用不用C++就變得無關緊要了
回覆列表
最重要的是思想不同,一個是結構化程式設計,一個是面向物件的程式設計,其次是一個偏向底層,一個適合上層大型軟體編寫!