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