C++與C的聯系與區別


C++與C的聯系:

  C++是在C語言的基礎上開發的一種面向對象編程語言,應用廣泛。C++支持多種編程范式 --面向對象編程、泛型編程和過程化編程。 其編程領域眾廣,常用於系統開發,引擎開發等應用領域,是最受廣大程序員受用的最強大編程語言之一,支持類:類、封裝、重載等特性!

  C++C的基礎上增添類,C是一個結構化語言,它的重點在於算法和數據結構。C程序的設計首要考慮的是如何通過一個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制),而對於C++,首要考慮的是如何構造一個對象模型,讓這個模型能夠契合與之對應的問題域,這樣就可以通過獲取對象的狀態信息得到輸出或實現過程(事務)控制。

C++與C的區別:

1、C是面向過程的語言,而C++是面向對象的語言,那么什么是面向對象?

  面向對象:面向對象是一種對現實世界的理解和抽象的方法、思想,通過將需求要素轉化為對象進行問題處理的一種思想。

2、C和C++動態管理內存的方法不一樣,C是使用malloc、free函數,而C++不僅有malloc/free,還有new/delete關鍵字。那malloc/free和new/delete差別?

  malloc/free和new/delete差別:

  ①、malloc/free是C和C++語言的標准庫函數,new/delete是C++的運算符。它們都可用於申請動態內存和釋放內存。

  ②、由於malloc/free是庫函數不是運算符,不在編譯器范圍之內,不能夠把執行構造函數和析構函數的任務強加入malloc/free。因此C++需要一個能完成動態內存分配和初始化工作的運算符new,一個能完成清理與釋放內存工作的運算符delete。

  ③、new可以認為是malloc加構造函數的執行。new出來的指針是直接帶類型信息的。而malloc返回的都是void指針。

  ④、malloc是從堆上開辟空間,而new是從自由存儲區開辟(自由存儲區是從C++抽象出來的概念,不僅可以是堆,還可以是靜態存儲區)。

  ⑤、malloc對開辟的空間大小有嚴格指定,而new只需要對象名。

  ⑥、malloc開辟的內存如果太小,想要換一塊大一點的,可以調用relloc實現,但是new沒有直觀的方法來改變。

3、C++的類是C中沒有的,C中的struct可以在C++中等同類來使用,struct和類的差別是,struct的成員默認訪問修飾符是public,而類默認是private。

4、C++支持重載,而C不支持重載,C++支持重載在於C++名字的修飾符與C不同,例如在C++中函數 int f(int) 經過名字修飾之后變為_f_int,而C是_f,所以C++才會支持不同的參數調用不同的函數。

5、C++中有引用,而C沒有。那指針和引用有什么差別?

  指針和引用的區別:  

  ①、指針有自己的一塊空間,而引用只是一個別名。

  ②、使用sizeof查看一個指針大小為4(32位),而引用的大小是被引用對象的大小。

  ③、指針可以是NULL,而引用必須被初始化且必須是對一個以初始化對象的引用。

  ④、作為參數傳遞時,指針需要被解引用才可以對對象進行操作,而直接對引用的修改都會改變引用所指向的對象。

  ⑤、指針在使用中可以指向其它對象,但是引用只能是一個對象的引用,不能被修改。

  ⑥、指針可以有多級指針(**p),而引用只有一級。

  ⑦、指針和引用使用++運算符的意義不一樣。

6、C++全部變量的默認連接屬性是外連接,而C是內連接。

7、C中用const修飾的變量不可以用在定義數組時的大小,但是C++用const修飾的變量可以。

8、C++有很多特有的輸入輸出流。

 參考地址:https://blog.csdn.net/bitboss/article/details/62884694、https://blog.csdn.net/lovedbaobao/article/details/53072157


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM