- 相關推薦
C語言和C++有什么區(qū)別
C是一個結構化語言,它的重點在于算法和數(shù)據(jù)結構,而C++,首要考慮的是如何構造一個對象模型,讓這個模型能夠契合與之對應的問題域,這樣就可以通過獲取對象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過程(事務)控制。下面是百分網(wǎng)小編整理的C語言和C++之間的區(qū)別,希望對您有所幫助!
C和C++的區(qū)別:
C是一個結構化語言,它的重點在于算法和數(shù)據(jù)結構。C程序的設計首要考慮的是如何通過一個過程,對輸入(或環(huán)境條件)進行運算處理得到輸出(或?qū)崿F(xiàn)過程(事務)控制)。
C++,首要考慮的是如何構造一個對象模型,讓這個模型能夠契合與之對應的問題域,這樣就可以通過獲取對象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過程(事務)控制。 所以C與C++的最大區(qū)別在于它們的用于解決問題的思想方法不一樣。之所以說C++比C更先進,是因為“ 設計這個概念已經(jīng)被融入到C++之中 ”。
下面我們一步一步來分析C++與C的不同:
一、類,類對于初學者,它是一個累贅。類的封裝使得初學者對程序產(chǎn)生厭倦,感到不適和麻煩。
二、引用,引用是C++中最好盡量不要用它,除非萬不得已。引用對于初學者就更容易產(chǎn)生混淆,不知道哪個是引用,哪個是變量。
三、函數(shù)的重載,初學者學函數(shù)的重載好像沒什么壞處,但是,這會使初學者潛意識里對C語言的變量類型的重要性產(chǎn)生淡化,要記住C語言是對變量類型最敏感了的,變量的類型在C語言里的重要性是不言而喻的。
四、流操作符,和上面同樣的道理,使得對變量類型的重要性產(chǎn)生淡化,有時會產(chǎn)生使初學者莫名其妙的結果。
五、操作符重載,典型的高級應用,初學者可能根本用不著,這個東東會讓他們覺得C++很難,門檻高,看不懂。
六、繼承,以及虛函數(shù),看起來深奧,實用價值很低。還有些東東我就不發(fā)表評論了,如:new,操作符等
七、誤區(qū):以問答形式:
問:C++是面向?qū)ο蠡亩鳦是面向過程化的?
答:第二對,第一問錯,C++并非完全面向?qū)ο蠡,真正的面向(qū)ο蠡恼Z言恐怕只有Java才算得上。
問:C++能實現(xiàn)C所不能的功能嗎?
答:至少我還沒有發(fā)現(xiàn)
問:學了C再學C++有障礙嗎?比如程序設計思想
答:至少我還沒有看見誰有此癥狀。
問:學了C再學C++又要重頭開始嗎?
答:不,C++下可以實現(xiàn)C語言的一切功能。
問:我學完了C一定還要學C++才能編程嗎?
答:完全沒必要。
問:C++比C好在哪里?
答:更加符合軟件工程學
問:學完了C再學C++是不是很容易?
答:那要看你是不是真正的學完了C語言。
C與C++的最大區(qū)別:在于它們的用于解決問題的思想方法不一樣。之所以說C++比C更先進,是因為“ 設計這個概念已經(jīng)被融入到C++之中 ”,而就語言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,錯!算法是程序設計的基礎,好的設計如果沒有好的算法,一樣不行。而且,“C加上好的設計”也能寫出非常好的東西。
對語言本身而言,C是C++的子集,那么是什么樣的一個子集?從上文可以看出, C實現(xiàn)了C++中過程化控制及其它相關功能,而在C++中的C(我稱它為“C+”),相對于原來的C還有所加強,引入了重載、內(nèi)聯(lián)函數(shù)、異常處理等等玩藝兒,C++更是拓展了面向?qū)ο笤O計的內(nèi)容,如類、繼承、虛函數(shù)、模板和包容器類等等。 再提高一點,在C++中,數(shù)據(jù)封裝、類型這些東東已不是什么新鮮事了,需要考慮的是諸如:對象粒度的選擇、對象接口的設計和繼承、組合與繼承的使用等等問題。
所以相對于C,C++包含了更豐富的“設計”的概念,但C是C++的一個自洽子集,也具有強大的功能,同樣值得學習
幾點學習建議:
1.基本概念很重要。無論學C,還是學C++,基本概念都是第一位的,也是比較困難的,但只有把握了基本概念才能把握整體脈絡,才能居高臨下。
2.C是C++的子集,它的基本概念和設計方法相對比較容易理解,初學者可從它入手。
3.如果要學好C++,建議初學者最好別在如VC,BCB平臺下寫程序,那種自動化的代碼生成,花花綠綠的界面,會讓你手足無措。最好先找一片空地(unix,dos),從頭做起,寫幾個大點的程序,數(shù)個回合,再到VC,BCB下看看,你會輕松得很。在我看來,學好C/C++是成為VC,BCB高手的必由之路。
4.不要妄想速成,必須得一個byte,一個bit的去摳,盡量搞清楚每一個問題。
C語言和C++之間的關系
C++ 讀作”C加加“,是”C Plus Plus“的簡稱。
顧名思義,C++是在C的基礎上增加新特性,玩出了新花樣,所以叫”C Plus Plus“,就像 iPhone 7 和 iPhone 6、Win10 和 Win7 的關系。
C語言是1972年由美國貝爾實驗室研制成功的,在當時算是高級語言,它的很多新特性都讓匯編程序員羨慕不已,就像今天的Go語言,剛出生就受到追捧。C語言也是”時髦“的語言,后來的很多軟件都用C語言開發(fā),包括 Windows、Linux 等。
但是隨著計算機性能的飛速提高,硬件配置與幾十年前已有天壤之別,軟件規(guī)模也不斷增大,很多軟件的體積都超過 1G,例如 PhotoShop、Visual Studio 等,用C語言開發(fā)這些軟件就顯得非常吃力了,這時候C++就應運而生了。
C++ 主要在C語言的基礎上增加了面向?qū)ο蠛头盒偷臋C制,提高了開發(fā)效率,以適用于大中型軟件的編寫。
C++和C的血緣關系
早期并沒有”C++“這個名字,而是叫做”帶類的C“。
”帶類的C“是作為C語言的一個擴展和補充出現(xiàn)的,目的是提高開發(fā)效率,如果你有Java Web開發(fā)經(jīng)驗,那么你可以將它們的關系與 Java 和 JSP 的關系類比。
這個時期的C++非常粗糙,僅支持簡單的面向?qū)ο缶幊,也沒有自己的編譯器,而是通過一個預處理程序(名字叫 cfront),先將C++代碼”翻譯“為C語言代碼,再通過C語言編譯器合成最終的程序。
隨著C++的流行,它的語法也越來越強大,已經(jīng)能夠很完善的支持面向?qū)ο缶幊毯头盒途幊獭?/p>
但是一直也沒有誕生出新的C++編譯器,而是對原來C編譯器不斷擴展,讓它支持C++的新特性,所以我們通常稱為C/C++編譯器,因為它同時支持C和C++,例如 Windows 下的微軟編譯器(cl.exe),Linux 下的 GCC 編譯器。
也就是說,你寫的C、C++代碼都會通過一個編譯器來編譯,很難說C++是一門獨立的語言,還是對C的擴展。
C++是在C語言的基礎上進行的擴展,C++包含了C語言的全部內(nèi)容。
【C語言和C++有什么區(qū)別】相關文章:
C語言和C++有什么關系09-23
C語言和C++的分別06-18
C++、C語言和JAVA開發(fā)的區(qū)別06-28
淺談c語言和c++和VB的區(qū)別07-04
C++、C語言和JAVA開發(fā)有哪些區(qū)別08-09
C/C++內(nèi)存管理09-20
Java與C/C++的區(qū)別06-18
C++類的轉(zhuǎn)換10-17
c++快速排序詳解10-18