官术网_书友最值得收藏!

  • C++程序設(shè)計(jì)教程
  • 傳智播客高教產(chǎn)品研發(fā)部編著
  • 2448字
  • 2020-09-11 08:36:25

1.1 C++簡介

作為一種面向?qū)ο蟮恼Z言,C++有著獨(dú)特的優(yōu)勢,它繼承了C語言,保留了C語言所有優(yōu)點(diǎn),又增加了面向?qū)ο蟮臋C(jī)制,這使C++成為一種大型語言,功能強(qiáng)大,效率較高,特別是在大型項(xiàng)目的編寫過程中,C++將軟件工程性提高了一個(gè)層次。對于如此強(qiáng)大的C++語言,本節(jié)我們就來揭開它的神秘面紗。

1.1.1 C++的發(fā)展史

1.C++語言出現(xiàn)的歷史背景

偉大的C++語言之父Bjarne Stroustrup博士曾經(jīng)說過:一種程序設(shè)計(jì)思想要為人所用,不僅語言的特性必須是典雅的,還需在真正的程序環(huán)境中能經(jīng)得起考驗(yàn)。面向?qū)ο蟪绦蛟O(shè)計(jì)方法(OOP)就是不斷在程序環(huán)境中接受考驗(yàn),它的提出以及它在大型項(xiàng)目編程中展現(xiàn)出的優(yōu)越性,使得人們開始重視面向?qū)ο蟪绦蛟O(shè)計(jì)語言的研究。

1967年誕生的第一個(gè)面向?qū)ο骃imula67語言,是OOP語言的鼻祖,它提出了對象的概念并且支持類和繼承。隨后相繼出現(xiàn)了Smalltalk與Smalltalk-80等面向?qū)ο蟮恼Z言,豐富和發(fā)展了面向?qū)ο蟪绦蛟O(shè)計(jì)的概念,并且提供了更加嚴(yán)格的信息隱藏機(jī)制,開始向世人展現(xiàn)面向?qū)ο蟪绦蛟O(shè)計(jì)的魅力。

2.C++的誕生與發(fā)展

1982年,Bjarne Stroustrup博士在C語言的基礎(chǔ)上引入并擴(kuò)充了面向?qū)ο蟮母拍睿l(fā)明了一種新的程序語言。開始這種語言被稱為new C,后來改為C with Class,1983年12月,Rick Mascitti建議命名為CPlus Plus,即C++。此后,C++語言在實(shí)踐中不斷被完善。

C++的發(fā)展大致可分為了三個(gè)階段:

第一階段從C++語言出現(xiàn)到1995年,這一階段C++語言基本上是傳統(tǒng)類型上的面向?qū)ο笳Z言,并且依靠接近C語言的效率,在計(jì)算機(jī)語言中占據(jù)著相當(dāng)大的比重,在這期間Bjame博士完成了經(jīng)典巨著《The C++ Programming Language》第一版;誕生了一個(gè)傳世經(jīng)典ARM;之后模板、異常、命名空間等相繼被加入。

第二階段從1995年到2000年,這一階段由于STL庫和后來的Boost庫等程序庫的出現(xiàn),泛型程序設(shè)計(jì)在C++中比重越來越大,同時(shí)由于Java、C#等語言的出現(xiàn)和硬件的影響,C++受到了一定的沖擊。

第三階段從2000年至今,由于Loki、MPL等程序庫為代表的產(chǎn)生式編程和模板元編程的出現(xiàn),C++出現(xiàn)了發(fā)展上的又一個(gè)高峰。這些新技術(shù)的出現(xiàn)以及和原有技術(shù)的融合,使C++已經(jīng)成為當(dāng)今主流程序設(shè)計(jì)語言中最復(fù)雜的一員。

1.1.2 C++的特點(diǎn)

C++語言既保留了C語言的有效性、靈活性、便于移植等全部精華和特點(diǎn),又添加了面向?qū)ο缶幊痰闹С郑哂袕?qiáng)大的編程功能,可方便地構(gòu)造出模擬現(xiàn)實(shí)問題的實(shí)體和操作;編寫出的程序具有結(jié)構(gòu)清晰、易于擴(kuò)充等優(yōu)良特性,它的諸多優(yōu)點(diǎn)使它適用于各種應(yīng)用軟件、系統(tǒng)軟件的程序設(shè)計(jì)。下面就來介紹C++語言都有哪些特點(diǎn)。

1.保持與C兼容

C++既保留了C語言的所有優(yōu)點(diǎn),又克服了C語言的缺點(diǎn),其編譯系統(tǒng)能檢查出更多的語法錯(cuò)誤,因此C++比C語言更安全。而且絕大多數(shù)C語言程序可以不經(jīng)修改直接在C++環(huán)境中運(yùn)行,用C語言編寫的眾多庫函數(shù)可以用于C++程序中。C++設(shè)計(jì)成與C兼容,借此提供一個(gè)從C到C++的平滑過渡。

2.支持面向?qū)ο蟮臋C(jī)制

C++引入了面向?qū)ο蟮母拍睿沟瞄_發(fā)人機(jī)交互類型的應(yīng)用程序更為簡單、快捷。很多優(yōu)秀的程序框架Boost、QT、MFC、OWL、wx Widgets、WTL等都是使用C++開發(fā)出來的。

3.可重用性、可擴(kuò)充性、可靠性和可維護(hù)性

C++程序設(shè)計(jì)無需復(fù)雜的環(huán)境,它的很多特性都是以庫(如 STL)或其他形式提供,而沒有直接添加到語言本身里,在可重用性、可擴(kuò)充性、可維護(hù)性和可靠性等方面都較C語言有所提高,使其更適合開發(fā)大中型的系統(tǒng)軟件和應(yīng)用程序。

4.代碼性能高

人們一般認(rèn)為,使用Java或C#的開發(fā)成本比C++低,但是,這句話成立是有一定條件的:軟件規(guī)模和復(fù)雜度較小。如果不超過3萬行的有效代碼(不包括生成器產(chǎn)生的代碼),它基本上成立,但隨著代碼量和復(fù)雜度的增加,C++優(yōu)勢將會(huì)越來越明顯。

5.多種設(shè)計(jì)風(fēng)格

C++設(shè)計(jì)支持多種程序設(shè)計(jì)風(fēng)格(過程化程序設(shè)計(jì)、資料抽象化、面向?qū)ο蟪绦蛟O(shè)計(jì)、泛型程序設(shè)計(jì)),給程序員更多的選擇。

盡管C++有很多優(yōu)點(diǎn),但它也像其他語言一樣避免不了有缺點(diǎn),C++語言本身過度復(fù)雜,導(dǎo)入模板后各種精巧的應(yīng)用使這門語言進(jìn)一步復(fù)雜化。并且C++編譯器受到C++復(fù)雜性的影響,編寫困難,即使能夠使用的編譯器也存在大量問題,而且這些問題大多難以發(fā)現(xiàn)。但是事物優(yōu)缺點(diǎn)的同時(shí)存在是客觀事實(shí),我們應(yīng)該正視這一點(diǎn)。C++語言能夠在大型項(xiàng)目中編寫出高效率、高質(zhì)量的代碼,但也要認(rèn)識到這并不是一件易事,要深入掌握它需要花費(fèi)較多時(shí)間,尤其是需要有較為豐富的實(shí)踐經(jīng)驗(yàn)。C++是目前編程語言中最難的,初學(xué)者在學(xué)習(xí)C++時(shí),面對復(fù)雜的C++語法與內(nèi)容往往會(huì)心生退卻,本書考慮到初學(xué)者狀態(tài),將用簡單易懂的語言帶大家進(jìn)入一個(gè)輕松愉快的C++世界。

1.1.3 C++應(yīng)用領(lǐng)域

C++語言誕生20年來,在經(jīng)過前10年的爆發(fā)性增長,后10年的使用人數(shù)一直在穩(wěn)定增長。作為有著20多年積累的程序設(shè)計(jì)語言,C++有著大量的技術(shù)沉淀,使得C++在現(xiàn)代軟件領(lǐng)域中占據(jù)著舉足輕重的地位,其應(yīng)用領(lǐng)域也越來越廣。C++的應(yīng)用領(lǐng)域主要集中在以下幾個(gè)方面。

(1)游戲:C++具有超高效率,而且近年來C++憑借先進(jìn)的數(shù)值計(jì)算庫、泛型編程等優(yōu)勢,在游戲領(lǐng)域應(yīng)用頗多。目前,除了一些網(wǎng)頁游戲,很多游戲客戶端都是基于C++開發(fā)的。

(2)網(wǎng)絡(luò)軟件:C++擁有很多成熟的用于網(wǎng)絡(luò)通信的庫,其中最具代表性的就是跨平臺的、重量級的ACE庫,該庫可以說是C++語言最重要的成果之一,在許多重要的企業(yè)、部門甚至是軍方都在應(yīng)用。

(3)服務(wù)端開發(fā):很多互聯(lián)網(wǎng)公司的后臺服務(wù)器都是基于 C++開發(fā)的,而且大部分是Linux、Unix等類似操作系統(tǒng),需要熟悉Linux操作系統(tǒng)及其在上面的開發(fā),熟悉數(shù)據(jù)庫開發(fā),精通網(wǎng)絡(luò)編程,而這些技術(shù)都離不開C++的支持。

(4)嵌入式系統(tǒng):因?yàn)镃++具有較高的效率,而且保持著對C語言的兼容性,能使底層平臺有很高的效率,同時(shí)具有很大的靈活性,使得它在底層開發(fā)中有著極大的應(yīng)用。另外C++在軟件拓展、移植維護(hù)上也有很好的表現(xiàn)。

(5)系統(tǒng)級開發(fā):在該領(lǐng)域,C語言是主要的編程語言,但C++憑借對C的兼容,應(yīng)用于底層開發(fā)可以用來編寫驅(qū)動(dòng)程序,因此可以用來開發(fā)系統(tǒng)級軟件,編寫操作系統(tǒng)。

除此之外,C++在數(shù)字圖像處理、虛擬現(xiàn)實(shí)仿真等方面都有著廣泛的應(yīng)用,我們可以用一張圖來概括C++的應(yīng)用領(lǐng)域,如圖1-1所示。

圖1-1 C++應(yīng)用領(lǐng)域

當(dāng)然,C++的應(yīng)用不止于這些圖文說明,隨著信息化、智能化、網(wǎng)絡(luò)化的發(fā)展,嵌入式系統(tǒng)技術(shù)的發(fā)展,C++語言的應(yīng)用會(huì)越來越多,在各個(gè)應(yīng)用領(lǐng)域都將發(fā)揮重要的作用。

主站蜘蛛池模板: 星子县| 南召县| 汉阴县| 明星| 商丘市| 申扎县| 杭锦旗| 海宁市| 衡阳县| 普兰县| 康马县| 珠海市| 菏泽市| 黄梅县| 鹰潭市| 鱼台县| 华蓥市| 清新县| 南充市| 鄂托克前旗| 屯昌县| 吉首市| 凤台县| 高台县| 改则县| 青阳县| 拉孜县| 黔江区| 陈巴尔虎旗| 始兴县| 库尔勒市| 镇平县| 雷山县| 寿阳县| 罗田县| 台中市| 额济纳旗| 垫江县| 连南| 泰安市| 贵州省|