當前位置:才華齋>計算機>C語言>

C語言和C++的分別

C語言 閱讀(9.24K)

C和C++的關係就像是win98跟winXP的關係。C++是在C的基礎上增加了新的理論,玩出了新的花樣。所以叫C加加。下面是小編為大家整理的C語言和C++的分別,歡迎參考~

C語言和C++的分別

  C和C++的區別:

C是一個結構化語言,它的重點在於演算法和資料結構。C程式的設計首要考慮的是如何通過一個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制)。

C++,首要考慮的是如何構造一個物件模型,讓這個模型能夠契合與之對應的問題域,這樣就可以通過獲取物件的狀態資訊得到輸出或實現過程(事務)控制。 所以C與C++的最大區別在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因為“ 設計這個概念已經被融入到C++之中 ”。

下面我們一步一步來分析C++與C的不同:

一、類,類對於初學者,它是一個累贅。類的封裝使得初學者對程式產生厭倦,感到不適和麻煩。

二、引用,引用是C++中最好儘量不要用它,除非萬不得已。引用對於初學者就更容易產生混淆,不知道哪個是引用,哪個是變數。

三、函式的'過載,初學者學函式的過載好像沒什麼壞處,但是,這會使初學者潛意識裡對C語言的變數型別的重要性產生淡化,要記住C語言是對變數型別最敏感了的,變數的型別在C語言裡的重要性是不言而喻的。

四、流操作符,和上面同樣的道理,使得對變數型別的重要性產生淡化,有時會產生使初學者莫名其妙的結果。

五、操作符過載,典型的高階應用,初學者可能根本用不著,這個東東會讓他們覺得C++很難,門檻高,看不懂。

六、繼承,以及虛擬函式,看起來深奧,實用價值很低。還有些東東我就不發表評論了,如:new,操作符等

七、誤區:以問答形式:

問:C++是面向物件化的而C是面向過程化的?

答:第二對,第一問錯,C++並非完全面向物件化,真正的面向物件化的語言恐怕只有Java才算得上。

問:C++能實現C所不能的功能嗎?

答:至少我還沒有發現

問:學了C再學C++有障礙嗎?比如程式設計思想

答:至少我還沒有看見誰有此症狀。

問:學了C再學C++又要重頭開始嗎?

答:不,C++下可以實現C語言的一切功能。

問:我學完了C一定還要學C++才能程式設計嗎?

答:完全沒必要。

問:C++比C好在哪裡?

答:更加符合軟體工程

問:學完了C再學C++是不是很容易?

答:那要看你是不是真正的學完了C語言。

C與C++的最大區別:在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因為“ 設計這個概念已經被融入到C++之中 ”,而就語言本身而言,在C中更多的是演算法的概念。那麼是不是C就不重要了,錯!演算法是程式設計的基礎,好的設計如果沒有好的演算法,一樣不行。而且,“C加上好的設計”也能寫出非常好的東西。

對語言本身而言,C是C++的子集,那麼是什麼樣的一個子集?從上文可以看出, C實現了C++中過程化控制及其它相關功能,而在C++中的C(我稱它為“C+”),相對於原來的C還有所加強,引入了過載、行內函數、異常處理等等玩藝兒,C++更是拓展了面向物件設計的內容,如類、繼承、虛擬函式、模板和包容器類等等。 再提高一點,在C++中,資料封裝、型別這些東東已不是什麼新鮮事了,需要考慮的是諸如:物件粒度的選擇、物件介面的設計和繼承、組合與繼承的使用等等問題。

所以相對於C,C++包含了更豐富的“設計”的概念,但C是C++的一個自洽子集,也具有強大的功能,同樣值得學習

  幾點學習建議:

1.基本概念很重要。無論學C,還是學C++,基本概念都是第一位的,也是比較困難的,但只有把握了基本概念才能把握整體脈絡,才能居高臨下。

2.C是C++的子集,它的基本概念和設計方法相對比較容易理解,初學者可從它入手。

3.如果要學好C++,建議初學者最好別在如VC,BCB平臺下寫程式,那種自動化的程式碼生成,花花綠綠的介面,會讓你手足無措。最好先找一片空地(unix,dos),從頭做起,寫幾個大點的程式,數個回合,再到VC,BCB下看看,你會輕鬆得很。在我看來,學好C/C++是成為VC,BCB高手的必由之路。

4.不要妄想速成,必須得一個byte,一個bit的去摳,儘量搞清楚每一個問題。