1979 年,Bjarne Stroustrup 借鑒 Simula 中 "Class" 的概念,開始研究增強(qiáng) C 語言,使其支持面向?qū)ο蟮奶匦浴?B.Stroustrup 寫了一個(gè)轉(zhuǎn)換程序 "Cfront" 把 C++ 代碼轉(zhuǎn)換為普通的 C 代碼,使它在各種各樣的平臺(tái)上立即投入使用。 1983 年,這種語言被命名為 C++
1986 年,B.Stroustrup 出版了 《The C++ Programming Language》第一版,這時(shí) C++ 已經(jīng)開始受到關(guān)注, B.Stroustrup 被稱為 C++之父(Creator of C++)。
1989 年,負(fù)責(zé) C++ 標(biāo)準(zhǔn)化的 ANSI X3J16掛牌成立。1990 年,B.Stroustrup 出版了 《The Annotated C++ Reference Manual》(簡(jiǎn)稱 ARM),由于當(dāng)時(shí)還沒有 C++ 標(biāo)準(zhǔn),ARM 成了事實(shí)上的標(biāo)準(zhǔn)。
1990 年, Template(模板) 和 Exception(異常) 加入到了 C++ 中, 使 C++ 具備了泛型編程(Generic Programming)和更好的運(yùn)行期錯(cuò)誤處理方式。
1991 年,負(fù)責(zé) C++ 語言國際標(biāo)準(zhǔn)化的技術(shù)委員會(huì)工作組 ISO/IEC JTC1/SC22/WG21 召開了第一次會(huì)議,開始進(jìn)行 C++ 國際標(biāo)準(zhǔn)化的工作。從此,ANSI 和 ISO 的標(biāo)準(zhǔn)化工作保持同步,互相協(xié)調(diào)。
1993 年,RTTI(運(yùn)行期類型識(shí)別) 和 Namespace(名字空間) 加入到 C++ 中。1994 年, C++ 標(biāo)準(zhǔn)草案出臺(tái)。 B.Stroustrup 出版了《The Design and Evolution of C++》(簡(jiǎn)稱 D&E)。 本來,C++ 標(biāo)準(zhǔn)已接近完工,這時(shí) STL(標(biāo)準(zhǔn)模板庫) 的建議草案被提交到標(biāo)準(zhǔn)委員會(huì),對(duì) STL 標(biāo)準(zhǔn)化的討論又一次推遲了 C++ 標(biāo)準(zhǔn)的出臺(tái)。
1998 年,ANSI 和 ISO 終于先后批準(zhǔn) C++ 語言成為美國國家標(biāo)準(zhǔn)和國際標(biāo)準(zhǔn)。
2000 年,B.Stroustrup 推出了 《The C++ Programming Language》特別版(Special Edition),書中內(nèi)容根據(jù) C++ 標(biāo)準(zhǔn)進(jìn)行了更新。
語言的發(fā)展是一個(gè)逐步遞進(jìn)的過程,C++ 是直接從 C 語言發(fā)展過來的,而 C 語言是從 B 語言發(fā)展過來的,B 語言是 BCPL 的一個(gè)解釋性后代,BCPL 是 Basic CPL。其中最有趣的是 CPL 中 C 的由來,由于當(dāng)時(shí)這個(gè)語言是劍橋大學(xué)和倫敦大學(xué)合作開發(fā)的,在倫敦的人員加入之前,C 表示劍橋,倫敦人員加入之后,C 表示 Combined 組合。還有一種非正式的說法,C 表示 Christopher,因?yàn)?Christopher 是 CPL 背后的主要?jiǎng)恿Α?br /> 最初導(dǎo)致C++誕生的原因是在Bjarne博士等人試圖去分析UNIX的內(nèi)核的時(shí)候,這項(xiàng)工作開始于1979年4月,當(dāng)時(shí)由于沒有合適的工具能夠有效的分析由于內(nèi)核分布而造成的網(wǎng)絡(luò)流量,以及怎樣將內(nèi)核模塊化。同年10月,Bjarne博士完成了一個(gè)可以運(yùn)行的預(yù)處理程序,稱之為Cpre,它為C加上了類似Simula的類機(jī)制。在這個(gè)過程中,Bjarne博士開始思考是不是要開發(fā)一種新的語言,當(dāng)時(shí)貝爾實(shí)驗(yàn)室對(duì)這個(gè)想法很感興趣,就讓Bjarne博士等人組成一個(gè)開發(fā)小組,專門進(jìn)行研究。
當(dāng)時(shí)不是叫做C++,而是C with class,這是把它當(dāng)作一種C語言的有效擴(kuò)充。由于當(dāng)時(shí)C語言在編程界居于老大的地位,要想發(fā)展一種新的語言,最強(qiáng)大的競(jìng)爭(zhēng)對(duì)手就是C語言,所以當(dāng)時(shí)有兩個(gè)問題最受關(guān)注:C++要在運(yùn)行時(shí)間、代碼緊湊性和數(shù)據(jù)緊湊性方面能夠與C語言相媲美,但是還要盡量避免在語言應(yīng)用領(lǐng)域的限制。在這種情況下,一個(gè)很自然的想法就是讓C++從C語言繼承過來,但是我們的Bjarne博士更具有先見之明,他為了避免受到C語言的局限性,參考了很多的語言,例如:從Simula繼承了類的概念,從Algol68繼承了運(yùn)算符重載、引用以及在任何地方聲明變量的能力,從BCPL獲得了//注釋,從Ada得到了模板、名字空間,從Ada、Clu和ML取來了異常。