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