首先,我們來看看C語言與C++的概念:
1. C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。它由美國貝爾研究所的D.M.Ritchie于1972年推出,1978年后,C語言已先后被移植到大、中、小及微型機上,它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。它的應用范圍廣泛,具備很強的數據處理能力,不僅僅是在軟件開發上,而且各類科研都需要用到C語言,適于編寫系統軟件,三維,二維圖形和動畫,具體應用比如單片機以及嵌入式系統開發。
2.
1) C++這個詞在中國大陸的程序員圈子中通常被讀做“C加加”,而西方的程序員通常讀做“C plus plus”,“CPP”。 它是一種使用非常廣泛的計算機編程語言。C++是一種靜態數據類型檢查的、支持多重編程范式的通用程序設計語言。它支持過程化程序設計、數據抽象、面向對象程序設計、泛型程序設計等多種程序設計風格。
2) 隨著軟件規模的增大,用C語言編寫程序漸漸顯得有些吃力了。
C++是由AT&T Bell(貝爾)實驗室的Bjarne Stroustrup博士及其同事于20世紀80年代初在C語言的基礎上開發成功的? C++保留了C語言原有的所有優點,增加了面向對象的機制。
C++是由C發展而來的,與C兼容。用C語言寫的程序基本上可以不加修改地用于C++。從C++的名字可以看出它是C的超越和集中。C++既可用于面向過程的結構化程序設計,又可用于面向對象的程序設計,是一種功能強大的混合型的程序設計語言。
C++對C的“增強”,表現在六個方面:
(1) 類型檢查更為嚴格。
(2) 增加了面向對象的機制。
(3)增加了泛型編程的機制(Template)。
(4)增加了異常處理。
(5)增加了運算符重載。
(6)增加了標準模板庫(STL)。
面向對象程序設計,是針對開發較大規模的程序而提出來的,目的是提高軟件開發的效率。不要把面向對象和面向過程對立起來,面向對象和面向過程不是矛盾的,而是各有用途、互為補充的。
學習C++,既要會利用C++進行面向過程的結構化程序設計,也要會利用C++進行面向對象的程序設計,更要會利用模板進行泛型編程。
C和C++的區別:
1 C是一個結構化語言,它的重點在于算法和數據結構。C程序的設計考慮的是如何通過一個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制)。
2 C++,首要考慮的是如何構造一個對象模型,讓這個模型能夠契合與之對應的問題域,這樣就可以通過獲取對象的狀態信息得到輸出或實現過程(事務)控制。 所以C與C++的最大區別在于它們的用于解決問題的思想方法不一樣。之所以說C++比C更先進,是因為“ 設計這個概念已經被融入到C++之中 ”。

C語言C++
分析C++與C的不同:
一、類,類對于初學者,它是一個累贅。類的封裝使得初學者對程序產生厭倦,感到不適和麻煩。
二、引用,引用是C++中最好盡量不要用它,除非萬不得已。引用對于初學者就更容易產生混淆,不知道哪個是引用,哪個是變量。
三、函數的重載,初學者學函數的重載好像沒什么壞處,但是,這會使初學者潛意識里對C語言的變量類型的重要性產生淡化,要記住C語言是對變量類型最敏感了的,變量的類型在C語言里的重要性是不言而喻的。
四、流操作符,和上面同樣的道理,使得對變量類型的重要性產生淡化,有時會產生使初學者莫名其妙的結果。
五、操作符重載,典型的高級應用,初學者可能根本用不著,這個東東會讓他們覺得C++很難,門檻高,看不懂。
六、繼承,以及虛函數,看起來深奧,實用價值很低。
七、誤區::
問: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的去摳,盡量搞清楚每一個問題。