個人主頁:【??個人主頁】
系列專欄:【??系列專欄】
前言
C++是一種計算機(jī)高級程序設(shè)計語言, 由C語言擴(kuò)展升級而產(chǎn)生 , 最早于1979年由本賈尼·斯特勞斯特盧普在AT&T貝爾工作室研發(fā)。
C++既可以進(jìn)行C語言的過程化程序設(shè)計,又可以進(jìn)行以抽象數(shù)據(jù)類型為特點的基于對象的程序設(shè)計,還可以進(jìn)行以繼承和多態(tài)為特點的面向?qū)ο蟮某绦蛟O(shè)計。C++擅長面向?qū)ο蟪绦蛟O(shè)計的同時,還可以進(jìn)行基于過程的程序設(shè)計。
C++擁有計算機(jī)運行的實用性特征,同時還致力于提高大規(guī)模程序的編程質(zhì)量與程序設(shè)計語言的問題描述能力。
C++(The C++ Programming Language/c plus plus)
發(fā)展歷程
世界上第一種計算機(jī)高級語言是誕生于1954年的FORTRAN語言。之后出現(xiàn)了多種計算機(jī)高級語言。1970年,AT&T的Bell實驗室的D.Ritchie和K.Thompson共同發(fā)明了C語言。研制C語言的初衷是用它編寫UNIX系統(tǒng)程序,因此,它實際上是UNIX的"副產(chǎn)品"。它充分結(jié)合了匯編語言和高級語言的優(yōu)點,高效而靈活,又容易移植。
1971年,瑞士聯(lián)邦技術(shù)學(xué)院N.Wirth教授發(fā)明了Pascal語言。Pascal語言語法嚴(yán)謹(jǐn),層次分明,程序易寫,具有很強(qiáng)的可讀性,是第一個結(jié)構(gòu)化的編程語言。
20世紀(jì)70年代中期,Bjarne Stroustrup在劍橋大學(xué)計算機(jī)中心工作。他使用過Simula和ALGOL,接觸過C。他對Simula的類體系感受頗深,對ALGOL的結(jié)構(gòu)也很有研究,深知運行效率的意義。既要編程簡單、正確可靠,又要運行高效、可移植,是Bjarne Stroustrup的初衷。以C為背景,以Simula思想為基礎(chǔ),正好符合他的設(shè)想。1979年,Bjame Sgoustrup到了Bell實驗室,開始從事將C改良為帶類的C(C with classes)的工作。1983年該語言被正式命名為C++。自從C++被發(fā)明以來,它經(jīng)歷了3次主要的修訂,每一次修訂都為C++增加了新的特征并作了一些修改。第一次修訂是在1985年,第二次修訂是在1990年,而第三次修訂發(fā)生在c++的標(biāo)準(zhǔn)化過程中。在20世紀(jì)90年代早期,人們開始為C++建立一個標(biāo)準(zhǔn),并成立了一個ANSI和ISO(Intemational Standards Organization)國際標(biāo)準(zhǔn)化組織的聯(lián)合標(biāo)準(zhǔn)化委員會。該委員會在1994年1月25曰提出了第一個標(biāo)準(zhǔn)化草案。在這個草案中,委員會在保持Stroustrup最初定義的所有特征的同時,還增加了一些新的特征。
在完成C++標(biāo)準(zhǔn)化的第一個草案后不久,發(fā)生了一件事情使得C++標(biāo)準(zhǔn)被極大地擴(kuò)展了:Alexander stepanov創(chuàng)建了標(biāo)準(zhǔn)模板庫(Standard Template Library,STL)。STL不僅功能強(qiáng)大,同時非常優(yōu)雅,然而,它也是非常龐大的。在通過了第一個草案之后,委員會投票并通過了將STL包含到C++標(biāo)準(zhǔn)中的提議。STL對C++的擴(kuò)展超出了C++的最初定義范圍。雖然在標(biāo)準(zhǔn)中增加STL是個很重要的決定,但也因此延緩了C++標(biāo)準(zhǔn)化的進(jìn)程。
委員會于1997年11月14日通過了該標(biāo)準(zhǔn)的最終草案,1998年,C++的ANSI/IS0標(biāo)準(zhǔn)被投入使用。通常,這個版本的C++被認(rèn)為是標(biāo)準(zhǔn)C++。所有的主流C++編譯器都支持這個版本的C++,包括微軟的Visual C++和Borland公司的C++Builder。
語言標(biāo)準(zhǔn)
- C++98標(biāo)準(zhǔn)
C++標(biāo)準(zhǔn)第一版,1998年發(fā)布。正式名稱為ISO/IEC 14882:1998。- C++03標(biāo)準(zhǔn)
C++標(biāo)準(zhǔn)第二版,2003年發(fā)布。正式名稱為ISO/IEC 14882:2003[5] 。- C++11標(biāo)準(zhǔn)
C++標(biāo)準(zhǔn)第三版,2011年8月12日發(fā)布。正式名稱為ISO/IEC 14882:2011[6] 。
C++11對容器類的方法做了三項主要修改。
首先,新增的右值引用使得能夠給容器提供移動語義。其次,由于新增了模板類initilizer_list,因此新增了將initilizer_list作為參數(shù)的構(gòu)造函數(shù)和賦值運算符。第三,新增的可變參數(shù)模板(variadic template)和函數(shù)參數(shù)包(parameter pack)使得可以提供就地創(chuàng)建(emplacement)方法。- C++14標(biāo)準(zhǔn)
C++標(biāo)準(zhǔn)第四版,2014年8月18日發(fā)布。正式名稱為ISO/IEC 14882:2014[8]。
C++14是C++11的增量更新,主要是支持普通函數(shù)的返回類型推演,泛型 lambda,擴(kuò)展的 lambda 捕獲,對 constexpr 函數(shù)限制的修訂,constexpr變量模板化等。- C++17標(biāo)準(zhǔn)
C++標(biāo)準(zhǔn)第五版,C++17 是繼 C++14 之后,C++ 編程語言 ISO/IEC 標(biāo)準(zhǔn)的下一次修訂的非正式名稱。而就在2017年12月5日,ISO C++ 委員會正式發(fā)布了 C++ 17 標(biāo)準(zhǔn),官方名稱為 ISO/IEC 14882:2017。
語言特點
支持?jǐn)?shù)據(jù)封裝和數(shù)據(jù)隱藏
在C++中,類是支持?jǐn)?shù)據(jù)封裝的工具,對象則是數(shù)據(jù)封裝的實現(xiàn)。C++通過建立用戶定義類支持?jǐn)?shù)據(jù)封裝和數(shù)據(jù)隱藏。
在面向?qū)ο蟮某绦蛟O(shè)計中,將數(shù)據(jù)和對該數(shù)據(jù)進(jìn)行合法操作的函數(shù)封裝在一起作為一個類的定義。對象被說明為具有一個給定類的變量。每個給定類的對象包含這個類所規(guī)定的若干私有成員、公有成員及保護(hù)成員。完好定義的類一旦建立,就可看成完全封裝的實體,可以作為一個整體單元使用。類的實際內(nèi)部工作隱藏起來,使用完好定義的類的用戶不需要知道類是如何工作的,只要知道如何使用它即可。
支持繼承和重用
在C++現(xiàn)有類的基礎(chǔ)上可以聲明新類型,這就是繼承和重用的思想。通過繼承和重用可以更有效地組織程序結(jié)構(gòu),明確類間關(guān)系,并且充分利用已有的類來完成更復(fù)雜、深入的開發(fā)。新定義的類為子類,成為派生類。它可以從父類那里繼承所有非私有的屬性和方法,作為自己的成員。文章來源:http://www.zghlxwxcb.cn/news/detail-472443.html
支持多態(tài)性
采用多態(tài)性為每個類指定表現(xiàn)行為。多態(tài)性形成由父類和它們的子類組成的一個樹型結(jié)構(gòu)。在這個樹中的每個子類可以接收一個或多個具有相同名字的消息。當(dāng)一個消息被這個樹中一個類的一個對象接收時,這個對象動態(tài)地決定給予子類對象的消息的某種用法。多態(tài)性的這一特性允許使用高級抽象。
繼承性和多態(tài)性的組合,可以輕易地生成一系列雖然類似但獨一無二的對象。由于繼承性,這些對象共享許多相似的特征。由于多態(tài)性,一個對象可有獨特的表現(xiàn)方式,而另一個對象有另一種表現(xiàn)方式。文章來源地址http://www.zghlxwxcb.cn/news/detail-472443.html
到了這里,關(guān)于【零基礎(chǔ)學(xué)習(xí)C++】歡迎來到C++的世界的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!