C++,C語言的增強版
C++是一種使用非常廣泛的電腦程序設(shè)計語言。它是一種靜態(tài)數(shù)據(jù)類型檢查的,支持多范型的通用程序設(shè)計語言。C++支持過程化程序設(shè)計、數(shù)據(jù)抽象化、面向?qū)ο蟪绦蛟O(shè)計、泛型程序設(shè)計、基于原則設(shè)計等多種程序設(shè)計風(fēng)格。
貝爾實驗室的比雅尼·斯特勞斯特魯普博士在20世紀80年代發(fā)明并實現(xiàn)了C++。起初,這種語言被稱作“C with Classes”(“包含類的C語言”),作為C語言的增強版出現(xiàn)。隨后,C++不斷增加新特性。虛函數(shù)、操作符重載、多重繼承、模板、異常處理、RTTI(Runtime type information)、命名空間(namespace)逐漸納入標準。
1998年國際標準組織(ISO)頒布了C++程序設(shè)計語言的國際標準ISO/IEC 14882-1998。另外,就目前學(xué)習(xí)C++而言,可以認為它是一門獨立的語言;它并不依賴C語言,我們可以完全不學(xué)C語言,而直接學(xué)習(xí)C++。根據(jù)《C++編程思想》(Thinking in C++)一書所評述的,C++與C的效率往往相差在正負5%之間。所以有人認為在大多數(shù)場合中,C++完全可以取代C語言。
C++語言發(fā)展大概可以分為三個階段:第一階段從80年代到1995年。這一階段C++語言基本上是傳統(tǒng)類型上的面向?qū)ο笳Z言,并且憑借著接近C語言的效率,在工業(yè)界使用的開發(fā)語言中占據(jù)了相當(dāng)大份額;第二階段從1995年到2000年,這一階段由于標準模板庫(STL)和后來的Boost等程序庫的出現(xiàn),泛型程序設(shè)計在C++中占據(jù)了越來越多的比重性。
當(dāng)然,同時由于Java、C#等語言的出現(xiàn)和硬件價格的大規(guī)模下降,C++受到了一定的沖擊;第三階段從2000年至今,由于以Loki、MPL等程序庫為代表的產(chǎn)生式編程和模板元編程的出現(xiàn),C++出現(xiàn)了發(fā)展歷史上又一個新的高峰,這些新技術(shù)的出現(xiàn)以及和原有技術(shù)的融合,使C++已經(jīng)成為當(dāng)今主流程序設(shè)計語言中最復(fù)雜的一員。
C++的特色
和C語言相比,C++引入了更多的特性,包括:陳述性聲明,類似函數(shù)的強制轉(zhuǎn)型,new/delete操作符,布林類型,參考類型,默認參數(shù),函數(shù)重載,命名空間,類(包括所有和類相關(guān)的特性,如繼承、成員函數(shù)、虛函數(shù)、抽象類和建構(gòu)子),操作符重載,模板,::操作符,異常處理和運行時期識別。
和普遍認為的相反,C++不是第一個引入const關(guān)鍵字的。Const是在正式引入C語言不久之后,才被C++采用。
C++在某些案例中(見下“與C不兼容之處”),進行比C還要多的類型檢查。以“//”起始作為注解起源自C的前身BCPL,而后被重新引入到C++。
C++的一些特性,C不久之后也采用了,包括在for循環(huán)中聲明,C++風(fēng)格的注解(使用//符號,和inline,雖然C99定義的inline關(guān)鍵字與C++的定義不兼容。不過,C99也引入了不存在于C++的特性,如:variadic macros,和以數(shù)組作為參數(shù)的較佳處理;某些C++編譯器可能實現(xiàn)若干特性,以作為擴展,但其余部分并不符合現(xiàn)存的C++特性)
一個常見的混淆其實只是一個微妙的術(shù)語問題:由于它的演化來自C,在C++中的術(shù)語對象和C語言一樣是意味著存儲器區(qū)域,而不是類的實例,在其它絕大多數(shù)的面向?qū)ο笳Z言也是如此。舉例來說,在C和C++中,語句int i;定義一個int類型的對象,這就是變量的值i將在賦值時,所存入的存儲器區(qū)域。
語言特性
◆操作符
◆預(yù)處理器
◆預(yù)處理器指令和宏
◆模板
◆對象
◆封裝
◆繼承
◆多態(tài)
【編輯推薦】