首先,我們來看看C語言與C++的概念:
1. C語言是一種計算機(jī)程序設(shè)計語言抚恒,它既具有高級語言的特點咱台,又具有匯編語言的特點。它由美國貝爾研究所的D.M.Ritchie于1972年推出俭驮,1978年后回溺,C語言已先后被移植到大、中混萝、小及微型機(jī)上遗遵,它可以作為工作系統(tǒng)設(shè)計語言,編寫系統(tǒng)應(yīng)用程序逸嘀,也可以作為應(yīng)用程序設(shè)計語言车要,編寫不依賴計算機(jī)硬件的應(yīng)用程序。它的應(yīng)用范圍廣泛崭倘,具備很強的數(shù)據(jù)處理能力屯蹦,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言绳姨,適于編寫系統(tǒng)軟件登澜,三維,二維圖形和動畫飘庄,具體應(yīng)用比如單片機(jī)以及嵌入式系統(tǒng)開發(fā)脑蠕。
2.
1) C++這個詞在中國大陸的程序員圈子中通常被讀做“C加加”,而西方的程序員通常讀做“C plus plus”,“CPP”谴仙。 它是一種使用非常廣泛的計算機(jī)編程語言迂求。C++是一種靜態(tài)數(shù)據(jù)類型檢查的、支持多重編程范式的通用程序設(shè)計語言晃跺。它支持過程化程序設(shè)計揩局、數(shù)據(jù)抽象、面向?qū)ο蟪绦蛟O(shè)計掀虎、泛型程序設(shè)計等多種程序設(shè)計風(fēng)格凌盯。2) 隨著軟件規(guī)模的增大,用C語言編寫程序漸漸顯得有些吃力了烹玉。C++是由AT&T Bell(貝爾)實驗室的Bjarne Stroustrup博士及其同事于20世紀(jì)80年代初在C語言的基礎(chǔ)上開發(fā)成功的? C++保留了C語言原有的所有優(yōu)點驰怎,增加了面向?qū)ο蟮臋C(jī)制。C++是由C發(fā)展而來的二打,與C兼容县忌。用C語言寫的程序基本上可以不加修改地用于C++。從C++的名字可以看出它是C的超越和集中继效。C++既可用于面向過程的結(jié)構(gòu)化程序設(shè)計症杏,又可用于面向?qū)ο蟮某绦蛟O(shè)計,是一種功能強大的混型的程序設(shè)計語言瑞信。
C++對C的“增強”鸳慈,表現(xiàn)在六個方面:
(1) 類型檢查更為嚴(yán)格。
(2) 增加了面向?qū)ο蟮臋C(jī)制喧伞。
(3)增加了泛型編程的機(jī)制(Template)。
(4)增加了異常處理绩郎。
(5)增加了運算符重載潘鲫。
(6)增加了標(biāo)準(zhǔn)模板庫(STL)。
面向?qū)ο蟪绦蛟O(shè)計肋杖,是針對開發(fā)較大規(guī)模的程序而提出來的溉仑,目的是提高軟件開發(fā)的效率。不要把面向?qū)ο蠛兔嫦蜻^程對立起來状植,面向?qū)ο蠛兔嫦蜻^程不是矛盾的浊竟,而是各有用途、互為補充的津畸。
學(xué)習(xí)C++振定,既要會利用C++進(jìn)行面向過程的結(jié)構(gòu)化程序設(shè)計,也要會利用C++進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計肉拓,更要會利用模板進(jìn)行泛型編程后频。
C和C++的區(qū)別:
1 C是一個結(jié)構(gòu)化語言,它的重點在于算法和數(shù)據(jù)結(jié)構(gòu)。C程序的設(shè)計考慮的是如何通過一個過程卑惜,對輸入(或環(huán)境條件)進(jìn)行運算處理得到輸出(或?qū)崿F(xiàn)過程(事務(wù))控制)膏执。
2 C++,首要考慮的是如何構(gòu)造一個對象模型露久,讓這個模型能夠契合與之對應(yīng)的問題域更米,這樣就可以通過獲取對象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過程(事務(wù))控制。 所以C與C++的最大區(qū)別在于它們的用于解決問題的思想方法不一樣毫痕。之所以說C++比C更先進(jìn)征峦,是因為“ 設(shè)計這個概念已經(jīng)被融入到C++之中 ”。
C語言C++
分析C++與C的不同:
一镇草、類眶痰,類對于初學(xué)者,它是一個累贅梯啤。類的封裝使得初學(xué)者對程序產(chǎn)生厭倦竖伯,感到不適和麻煩。
二因宇、引用七婴,引用是C++中最好盡量不要用它,除非萬不得已察滑。引用對于初學(xué)者就更容易產(chǎn)生混淆打厘,不知道哪個是引用,哪個是變量贺辰。
三户盯、函數(shù)的重載,初學(xué)者學(xué)函數(shù)的重載好像沒什么壞處饲化,但是莽鸭,這會使初學(xué)者潛意識里對C語言的變量類型的重要性產(chǎn)生淡化,要記住C語言是對變量類型最敏感了的吃靠,變量的類型在C語言里的重要性是不言而喻的硫眨。
四、流操作符巢块,和上面同樣的道理礁阁,使得對變量類型的重要性產(chǎn)生淡化,有時會產(chǎn)生使初學(xué)者莫名其妙的結(jié)果族奢。五姥闭、操作符重載,典型的高級應(yīng)用越走,初學(xué)者可能根本用不著泣栈,這個東東會讓他們覺得C++很難,門檻高,看不懂南片。六掺涛、繼承,以及虛函數(shù)疼进,看起來深奧薪缆,實用價值很低。七伞广、誤區(qū)::問:C++是面向?qū)ο蠡亩鳦是面向過程化的拣帽?答:第二對,第一問錯嚼锄,C++并非完全面向?qū)ο蠡跏茫嬲拿嫦驅(qū)ο蠡恼Z言恐怕只有Java才算得上。
問:C++能實現(xiàn)C所不能的功能嗎区丑?
答:至少我還沒有發(fā)現(xiàn)
問:學(xué)了C再學(xué)C++有障礙嗎拧粪?比如程序設(shè)計思想
答:至少我還沒有看見誰有此癥狀。
問:學(xué)了C再學(xué)C++又要重頭開始嗎沧侥?
答:不可霎,C++下可以實現(xiàn)C語言的一切功能。
問:我學(xué)完了C一定還要學(xué)C++才能編程嗎宴杀?
答:完全沒必要癣朗。
問:C++比C好在哪里?
答:更加符合軟件工程學(xué)
問:學(xué)完了C再學(xué)C++是不是很容易旺罢?
答:那要看你是不是真正的學(xué)完了C語言旷余。
C與C++的最大區(qū)別:在于它們的用于解決問題的思想方法不一樣。之所以說C++比C更先進(jìn)扁达,是因為“ 設(shè)計這個概念已經(jīng)被融入到C++之中 ”正卧,而就語言本身而言,在C中更多的是算法的概念罩驻。那么是不是C就不重要了,錯护赊!算法是程序設(shè)計的基礎(chǔ)惠遏,好的設(shè)計如果沒有好的算法,一樣不行骏啰。而且节吮,“C加上好的設(shè)計”也能寫出非常好的東西。
對語言本身而言判耕,C是C++的子集透绩,那么是什么樣的一個子集?從上文可以看出, C實現(xiàn)了C++中過程化控制及其它相關(guān)功能帚豪,而在C++中的C(我稱它為“C+”)碳竟,相對于原來的C還有所加強,引入了重載狸臣、內(nèi)聯(lián)函數(shù)莹桅、異常處理等等玩藝兒,C++更是拓展了面向?qū)ο笤O(shè)計的內(nèi)容蚊丐,如類圣勒、繼承撒桨、虛函數(shù)、模板和包容器類等等铐达。 再提高一點,在C++中檬果,數(shù)據(jù)封裝瓮孙、類型這些東東已不是什么新鮮事了,需要考慮的是諸如:對象粒度的選擇汁汗、對象接口的設(shè)計和繼承衷畦、組合與繼承的使用等等問題。
所以相對于C知牌,C++包含了更豐富的“設(shè)計”的概念祈争,但C是C++的一個自洽子集,也具有強大的功能角寸,同樣值得學(xué)習(xí)
幾點學(xué)習(xí)建議:
1.基本概念很重要菩混。無論學(xué)C,還是學(xué)C++扁藕,基本概念都是第一位的沮峡,也是比較困難的,但只有把握了基本概念才能把握整體脈絡(luò)亿柑,才能居高臨下邢疙。
2.C是C++的子集,它的基本概念和設(shè)計方法相對比較容易理解望薄,初學(xué)者可從它入手疟游。
3.如果要學(xué)好C++,建議初學(xué)者最好別在如VC痕支,BCB平臺下寫程序颁虐,那種自動化的代碼生成,花花綠綠的界面卧须,會讓你手足無措另绩。最好先找一片空地(unix儒陨,dos),從頭做起笋籽,寫幾個大點的程序蹦漠,數(shù)個回合,再到VC干签,BCB下看看津辩,你會輕松得很。在我看來容劳,學(xué)好C/C++是成為VC喘沿,BCB高手的必由之路。
4.不要妄想速成竭贩,必須得一個byte蚜印,一個bit的去摳,盡量搞清楚每一個問題留量。
C語言C++
加C/C++學(xué)習(xí)交.流群獲取C語言窄赋、C++、Windows高級編程楼熄,MFC框架編程忆绰、QT框架編程,大型企業(yè)實戰(zhàn)項目可岂。Linux應(yīng)用程序開發(fā)错敢,Linux內(nèi)核研究等多個知識點高級進(jìn)階干貨的直播免費學(xué)習(xí)權(quán)限 都是大牛帶飛 讓你少走很多的彎路的 群...號是?894479708
注:加..群要求
1、零基礎(chǔ)缕粹,目前遇到困難不知從何下手可以加稚茅。
2、在公司待久了平斩,過得很安逸亚享,但跳槽時面試碰壁。需要在短時間內(nèi)進(jìn)修绘面、跳槽拿高薪的可以加欺税。
3、基礎(chǔ)非常扎實揭璃,但對目前主流技術(shù)欠缺晚凿,需要突破技術(shù)瓶頸的可以加。
4塘辅、覺得自己很牛B晃虫,一般需求都能搞定皆撩。但是所學(xué)的知識點沒有系統(tǒng)化扣墩,很難在技術(shù)領(lǐng)域繼續(xù)突破的可以加哲银。
5.企業(yè)一線C/C++高級大牛直播講解知識點,分享知識呻惕,多年工作經(jīng)驗的梳理和總結(jié)荆责,帶著大家全面、科學(xué)地建立自己的技術(shù)體系和技術(shù)認(rèn)知亚脆!