C語言與C++的區(qū)別_第1頁
C語言與C++的區(qū)別_第2頁
C語言與C++的區(qū)別_第3頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、C+幾乎完全兼容了C,但增加的特性差不多比整個C語言還多。C是一種簡單的語言。它真正提供的只有有宏、指針、結(jié)構(gòu)、數(shù)組和函數(shù);而C+還有私有和保護(hù)型成員、函數(shù)重載、缺省參數(shù)、構(gòu)造和析構(gòu)函數(shù)、自定義操作符、內(nèi)聯(lián)函數(shù)、引用、友元、模板、異常、名字空間,等等。用C+比用C具有更寬廣的空間,因為設(shè)計時有更多的選擇可以考慮。此外,C+從安全性上遠(yuǎn)比C好,因為類型檢查更嚴(yán)格。C只是C+的一個子集,C+是C語言發(fā)展的一個優(yōu)秀的旁支。C是面向過程的語言。C+是在C基礎(chǔ)發(fā)展起來的面向?qū)ο蟮恼Z言,他幾乎集成了所有的C的東西。(當(dāng)然也剔除了很多C的缺陷,這個就要在長期學(xué)習(xí)中慢慢體會了)。C語言是結(jié)構(gòu)化和模塊化的面向過

2、程的語言,C+語言是混合型面向?qū)ο蟮某绦蛟O(shè)計語言。C+語言是C語言的超集,也就是說學(xué)會了C+,你其實已經(jīng)把C語言學(xué)會了。至于說有什么區(qū)別,應(yīng)該說是編程思想的區(qū)別吧,C是基于過程的,強(qiáng)調(diào)的是程序的功能,以函數(shù)(功能)為中心。C+是面向?qū)ο蟮模瑥?qiáng)調(diào)程序的分層、分類,以抽象為基礎(chǔ),進(jìn)行對象的定義與展示,即程序設(shè)計。具體說來話長。建議你學(xué)習(xí)C+的時候,學(xué)會用面向?qū)ο蟮姆绞剿伎己途幊獭,F(xiàn)在在開發(fā)大項目的時候,都是應(yīng)用面向?qū)ο蟮姆治龊驮O(shè)計的技術(shù)。C和C+的區(qū)別有什么?其他的東西都不需要多說,就象類,繼承,引用等,大家都知道。這里講的是調(diào)用編譯的區(qū)別大家看WIN32SDK的頭文件,總是可以看到:ifdef_

3、cplusplusextern"C"endififdef_cplusplusendif這個就是直接能夠體現(xiàn)實際編程時區(qū)別的地方。在WIN系列下,所有的WIN32SDK提供的LIB都是以C的形式存在的。當(dāng)然,C和C+同樣都支持C,STDCALL,FASTCALL調(diào)用。為什么系統(tǒng)提供C編譯器編譯的LIB而不是C+編譯的LIB呢?這里其實就是C和C+編譯器不同的地方。所有的函數(shù)名稱只有在匯編編譯器下才最清楚。因為經(jīng)匯編編譯器編譯的函數(shù)不經(jīng)過任何修飾。C的編譯器編譯出來的函數(shù)名稱如果在匯編編譯器看來一個C調(diào)用將在函數(shù)名前家下劃線('_')。而一個STDCALL的函數(shù)

4、將是FUNCNUMBER的形式,如FUNC(void)經(jīng)過編譯器后成為FUNC0。一個FASTCALL調(diào)用的函數(shù)被編譯成FUNC0。順便提一下,在WIN32的編譯器里不再需要PASCALL調(diào)用,VC6已經(jīng)取消了對PASCALL的支持.光看C的編譯還不夠,看一下C+編譯器是怎么干的。在缺省情況下,一個C+的函數(shù)經(jīng)過C+編譯器后編譯出的函數(shù)名包括函數(shù)名,所屬的類,參數(shù)類型,調(diào)用約定,返回類型。而且更要命的是這么多的信息,只有函數(shù)名和類名在編譯后還依稀可見,其他就是一長串的ABCD字母,根本就是無法辨認(rèn)其意義的。我們在VC手冊里可以看到一個例子:void_stdcallb:c(float);>

5、?cbQAGXMZ一個函數(shù)被編譯得連名字也不知道怎么樣了.這么一來.如果SDK提供的是C+編譯器提供了LIB.那么可以說就無法編譯任何一個完整的WIN程序.更加不用說什么混合語言編程.現(xiàn)在,VC編譯器提供了個extern語句,當(dāng)出現(xiàn)extern'C語句,括號里的函數(shù)將以C方式經(jīng)過編譯器.從而使提供庫程序方便那么點。C語言與C+的區(qū)別有很多:1全新的程序程序思維,C語言是面向過程的,而C+是面向?qū)ο蟮摹?, C語言有標(biāo)準(zhǔn)的函數(shù)庫,它們松散的,只是把功能相同的函數(shù)放在一個頭文件中;而C+對于大多數(shù)的函數(shù)都是有集成的很緊密,特別是C語言中沒有的C+中的API是對Window系統(tǒng)的大多數(shù)API

6、有機(jī)的組合,是一個集體。但你也可能單獨調(diào)用API。3, 特別是C+中的圖形處理,它和C語言的圖形有很大的區(qū)別。C語言中的圖形處理函數(shù)基本上是不能用在C+中的。C語言標(biāo)準(zhǔn)中不包括圖形處理。C和C+中都有結(jié)構(gòu)的概念,但是在C語言中結(jié)構(gòu)只有成員變量,而沒成員方法,而在C+中結(jié)構(gòu)中,它可以有自己的成員變量和成員函數(shù)。但是在C語言中結(jié)構(gòu)的成員是公共的,什么想訪問它的都可以訪問;而在VC+中它沒有加限定符的為私有的。4,C語言可以寫很多方面的程序,但是C+可以寫得更多更好,C+可以寫基于DOS的程序,寫DLL,寫控件,寫系統(tǒng)。5,C語言對程序的文件的組織是松散的,幾乎是全要程序處理;而C+對文件的組織是以

7、工程,各文件分類明確。6,C+中的IDE很智能,和VB樣,有的功能可能比VB還強(qiáng)。7,C+對可以自動生成你想要的程序結(jié)構(gòu)使你可以省很多時間。有很多可用工具如加入MFC中的類的時候,加入變量的時候等等。8,C+中的附加工具也有很多,可以進(jìn)行系統(tǒng)的分析,可以查看API;可以查看控件。9,調(diào)試功能強(qiáng)大,并且方法多樣。C語言:20世紀(jì)70年代早期,貝爾實驗室的DennisRitchie致力于開發(fā)UNIX操作系統(tǒng)。為完成這項工作,Ritchie需要一種語言,它必須簡潔,能夠生成簡潔、快速的程序,并能有效地控制硬件。當(dāng)時應(yīng)用的語言是匯編語言,它依賴于特定的機(jī)器,移植性非常差。而UNIX需要運(yùn)行在不同的機(jī)器

8、上,也就是說它是一種高級語言,不需要針對特定的硬件。一種被稱為編譯器的特殊程序?qū)⒏呒壵Z言翻譯成特定的計算機(jī)的內(nèi)部語言。Richie希望有一種語言能將低級語言的效率、硬件訪問能力和高級語言的通用性、可移植性融合在一起,于是他在舊語言的基礎(chǔ)上開發(fā)了C語言。C+語言:C+在C語言的基礎(chǔ)上移植了新的編程理念,因此我們首先來看一看C所遵循的舊的理念。一般來說,計算機(jī)語言要處理兩個概念-數(shù)據(jù)和算法。數(shù)據(jù)是程序使用和處理的信息,而算法是程序使用的方法。C語言和當(dāng)前最流行的語言一樣,在最初面世時也是過程性(procedural語言,這意味著它強(qiáng)調(diào)的是編程的算法方面。從概念上講,過程化編程首先要確定計算機(jī)應(yīng)采取

9、的操作,然后使用編程語言來實現(xiàn)這些操作。隨著程序規(guī)模的擴(kuò)大,早期的程序語言(如FROTRAN和BASIC)都會遇到組織方面的問題,如經(jīng)常使用分支等。使人們不可能通過閱讀程序來理解它。為了解決這個問題,計算機(jī)科學(xué)家開發(fā)了一種更有序的編程方法-結(jié)構(gòu)化編程(structuredprogramming。C語言就具有使用這種方法的特性。另一個新的原則是自頂向下(top-down)的設(shè)計。在C語言中,其理念是將大型的程序分解成小型、便于管理的任務(wù),如果其中的一項仍然過大,則繼續(xù)分解。C語言的這種設(shè)計有助于使用這種方法,它鼓勵程序員開發(fā)程序單元(稱為函數(shù))來表示各個任務(wù)模塊。由于C+在C語言的基礎(chǔ)上移植了新

10、的編程理念,因此我們首先來看一看C所遵循的舊的理念。一般來說,計算機(jī)語言要處理兩個概念-數(shù)據(jù)和算法。數(shù)據(jù)是程序使用和處理的信息,而算法是程序使用的方法。C語言和當(dāng)前最流行的語言一樣,在最初面世時也是過程性(procedural語言,這意味著它強(qiáng)調(diào)的是編程的算法方面。從概念上講,過程化編程首先要確定計算機(jī)應(yīng)采取的操作,然后使用編程語言來實現(xiàn)這些操作。和C語言一樣,C+也是在貝爾實驗室誕生的,BjarneStroustrup于20世紀(jì)80年代在這里開發(fā)出了這種語言。C+的OOP方面是受到了計算機(jī)模擬語言Simula67的啟發(fā)。Stroustrup加入了OOP特性和對C的通用編程支持,但并沒有C的組件作很大的改動。因此

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論