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語言里的重要性是不言而喻的。
四、流操作符,和上面同樣的道理,使得對變量類型的重要性產生淡化,況且,cin這個東東有點兒不怎么方便,有時會產生使初學者莫名其妙的結果。
五、操作符重載,典型的高級應用,初學者可能根本用不著,會讓他們覺得C++很難,門檻高,看不懂。
六、繼承,以及虛函數,典型的模仿四不象,這種狗屁東西除了看起來深奧,實用價值很低,例如:把某個類的類型的指針去指向另一個不同類型但是是繼承關系的類,來實現動態聯編等等。
學習c可以鍛煉人的編程思想。一個好的編程思想,絕對比一門好'計算機語言重要的多。要形成自己的編程風格。一個好的編程思想在你的頭腦中一旦形成,學習什么語言都會很輕而易舉,因為此時的你不在是簡簡單單的學習,而是來驗證!