語言的發展是一個逐步遞進的過程,C++ 是直接從 C 語言發展過來的,而 C 語言是從 B 語言發展過來的,B 語言是
BCPL 的一個解釋性后代,BCPL 是 Basic CPL。其中最有趣的是 CPL 中 C 的由來,由於當時這個語言是劍橋大學和
倫敦大學合作開發的,在倫敦的人員加入之前,C 表示劍橋,倫敦人員加入之后,C 表示 Combined 組合。還有一種非
正式的說法,C 表示 Christopher,因為 Christopher 是 CPL 背后的主要動力。
最初導致C++誕生的原因是在Bjarne博士等人試圖去分析UNIX的內核的時候,這項工作開始於1979年4月,當時由於沒
有合適的工具能夠有效的分析由於內核分布而造成的網絡流量,以及怎樣將內核模塊化。同年10月,Bjarne博士完成了
一個可以運行的預處理程序,稱之為Cpre,它為C加上了類似Simula的類機制。在這個過程中,Bjarne博士開始思考是
不是要開發一種新的語言,當時貝爾實驗室對這個想法很感興趣,就讓Bjarne博士等人組成一個開發小組,專門進行研究。
當時不是叫做C++,而是C with class,這是把它當作一種C語言的有效擴充。由於當時C語言在編程界居於老大的地位,
要想發展一種新的語言,最強大的競爭對手就是C語言,所以當時有兩個問題最受關注:C++要在運行時間、代碼緊湊性和
數據緊湊性方面能夠與C語言相媲美,但是還要盡量避免在語言應用領域的限制。在這種情況下,一個很自然的想法就是讓
C++從C語言繼承過來,但是我們的Bjarne博士更具有先見之明,他為了避免受到C語言的局限性,參考了很多的語言,例
如:從Simula繼承了類的概念,從Algol68繼承了運算符重載、引用以及在任何地方聲明變量的能力
下面讓我們來一起看一下C++歷史上的主要事件:
1983年8月, 第一個C++實現投入使用
1983年12月,Rick Mascitti建議命名為CPlusPlus,即C++。
1985年2月, 第一個C++ Release E發布。
10月,CFront的第一個商業發布,CFront Release 1.0。
10月,Bjarne博士完成了經典巨著The C++ Programming Language第一版
1986年11月,C++第一個商業移植CFront 1.1,Glockenspiel。
1987年2月, CFront Release 1.2發布。
11月,第一個USENIX C++會議在新墨西哥州舉行。
1988年10月,第一次USENIX C++實現者工作會議在科羅拉多州舉行。
1989年12月,ANSI X3J16在華盛頓組織會議。
1990年3月, 第一次ANSI X3J16技術會議在新澤西州召開.
5月, C++的又一個傳世經典ARM誕生。
7月, 模板被加入。
11月,異常被加入。
1991年6月, The C++ Programming Language第二版完成。
6月, 第一次ISO WG21會議在瑞典召開。
10月,CFront Release 3.0發布。
1993年3月, 運行時類型識別在俄勒岡州被加入。
7月, 名字空間在德國慕尼黑被加入。
1994年8月, ANSI/ISO委員會草案登記。
1997年7月, The C++ Programming Language第三版完成。
10月,ISO標准通過表決被接受
1998年11月,ISO標准被批准。
C++畢竟是編譯型的語言,比Java這種解釋型的語言的優勢就是運行效率高,保持了C的風格,更接近計算機的思維,有助於對計算系系統的學習。
底層操縱能力強,保留了指針這些直接操作內存的元素;
類Unix系統核心代碼都是使用C語言寫的,這也算是C、C++的一個巨大的學習資源,既可以學習語言也可以學習操作系統,一舉兩得。
C++不是完全的面向對象語言,java是完全的面向對象的語言。C++既保留了C語言的靈活性,簡潔高效和接近匯編底層語言等的特點,又增加面向對象等特點。用C++寫的代碼可讀性好,運行效率高。
在C語言的基礎上,C++增加下面的內容:
(1)類型檢查更加嚴格
(2)增加了面向對象機制
(3)增加了泛型編程的機制
(4)增加了函數重載和運算符重載。
(5)異常處理機制
(6)標准模板庫STL。
C++兼容C語言的絕大部分內容,但還是有一些差異的,不兼容的,比如C語言允許從void* 隱式轉化為其他類型的指針,這在c++中是不允許的。
C++的優點:
1.代碼可讀性好。
2.可重用性好。
3.可移植。
4.C++設計成無需復雜的程序設計環境
5.運行效率高,高效安全
6.語言簡潔,編寫風格自由。
7.提供了標准庫stl
8.面向對象機制
9.很多優秀的程序框架包括Boost、Qt、MFC、OWL、wxWidgets、WTL就是使用的C++。
等等
C++的缺點與缺陷:
1.相對java來說,沒有垃圾回收機制,可能引起內存設漏;
2.內容較多較難,學起來相對困難;
等等。
C++更適合大項目,在大項目中C++是其他言語不可比擬的。做較小的項目,性能可能比不上java