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

1.3 C++與面向?qū)ο蟪绦蛟O(shè)計(jì)

C++是從C語言發(fā)展演變而來的。它在C語言的基礎(chǔ)上引入了類(class)的概念,并增加了封裝、繼承、多態(tài)等面向?qū)ο蟮恼Z言處理機(jī)制。C++向前兼容了C語言程序設(shè)計(jì),使得絕大部分C程序可以不加修改就能在C++環(huán)境下編譯運(yùn)行,同時(shí)提供了面向?qū)ο蟮某绦蛟O(shè)計(jì)機(jī)制,支持面向?qū)ο蟪绦蛟O(shè)計(jì),是一種面向過程與面向?qū)ο蟮幕旌暇幊陶Z言。

1.C++簡史

在計(jì)算機(jī)發(fā)展的早期,操作系統(tǒng)之類的軟件主要是用匯編語言編寫的。由于匯編語言依賴于計(jì)算機(jī)硬件系統(tǒng),用它編寫的軟件系統(tǒng)的可移植性和可讀性都比較差。

UNIX系統(tǒng)最初也是用匯編語言編寫的。為了提高UNIX系統(tǒng)的可移植性和可讀性,1970年,美國AT&T貝爾實(shí)驗(yàn)室的Ken Thompson以BCPL(Basic Combined Programming Language)為基礎(chǔ),設(shè)計(jì)了非常簡潔且與硬件很接近的B語言,用該語言改寫了UNIX,并在PDP-7上實(shí)現(xiàn)了它。

B語言是一種無類型的語言,直接對機(jī)器字進(jìn)行操作,過于簡單,且功能不強(qiáng)。在1972年到1973年間,貝爾實(shí)驗(yàn)室的Dennis Ritchie對B語言進(jìn)行了改造,添加了數(shù)據(jù)類型的概念,設(shè)計(jì)了C語言,并在1973年和Thompson用C語言重寫了UNIX 90%以上的代碼,這就是UNIX 5。在此之后,C語言又進(jìn)行了多次改進(jìn),1975年UNIX 6發(fā)布后,C語言突出的優(yōu)點(diǎn)引起了世人的普遍關(guān)注。1977年,不依賴于具體機(jī)器指令的、可移植的C語言出現(xiàn)了。

C語言簡潔、靈活,具有豐富的數(shù)據(jù)類型和運(yùn)算符,具有結(jié)構(gòu)化的程序控制語句,支持程序直接訪問計(jì)算機(jī)的物理地址,具有高級語言和匯編語言的雙重特點(diǎn)。1978年以后,C語言已先后被移植到了大、中、小及微型計(jì)算機(jī)上。伴隨著UNIX系統(tǒng)在各種類型的計(jì)算機(jī)上的實(shí)現(xiàn)和普及,C語言逐漸成了最受歡迎的程序設(shè)計(jì)語言之一。

但是C語言本身也存在一些缺陷,類型檢查機(jī)制較弱,缺乏支持代碼重用的語言結(jié)構(gòu),不適合大型軟件系統(tǒng)的開發(fā)設(shè)計(jì),當(dāng)程序規(guī)模大到一定程度時(shí),就很難控制程序的復(fù)雜性了。

1979年,貝爾實(shí)驗(yàn)室的Bjarne Stroustrup借鑒了Simula(較早的一種面向?qū)ο蟪绦蛟O(shè)計(jì)語言)類的概念,對C語言進(jìn)行了擴(kuò)展和創(chuàng)新,將Simula的數(shù)據(jù)抽象和面向?qū)ο蟮人枷胍肓薈語言中,稱為“帶類的C”,這就是C++的早期版本。1983年,“帶類的C”正式改名為C++。

C++發(fā)明至今,主要經(jīng)歷了三次修訂,每次修訂都增加和修改了一些內(nèi)容。第一次修訂發(fā)生在1985年,第二次修訂是1990年。為了實(shí)現(xiàn)C++的標(biāo)準(zhǔn)化,成立了由ANSI(American National Standards Institute,美國國家標(biāo)準(zhǔn)化協(xié)會)和ISO(International Standards Organization,國際標(biāo)準(zhǔn)化組織)參加的聯(lián)合標(biāo)準(zhǔn)化委員會。該委員會于1994年提出了一個(gè)標(biāo)準(zhǔn)草案,此草案保持了Stroustrup最初定義的C++功能,并增加了一些功能。

標(biāo)準(zhǔn)草案提出之后不久出現(xiàn)了STL(Standard Template Library),STL是一組通用例程,它功能強(qiáng)大,設(shè)計(jì)精巧,但很龐大。為了將STL加入C++,拖延了C++的標(biāo)準(zhǔn)化進(jìn)程。聯(lián)合標(biāo)準(zhǔn)化委員會在C++的標(biāo)準(zhǔn)化過程中,陸續(xù)增加了許多新的功能,并對原有內(nèi)容進(jìn)行了許多修改。

聯(lián)會委員會于1998年提出了C++的ANAI/ISO標(biāo)準(zhǔn),這個(gè)比Stroustrup最初定義C++要大得多,也復(fù)雜得多,人們稱此為標(biāo)準(zhǔn)C++。為了與標(biāo)準(zhǔn)C++相區(qū)別,將之前的版本稱為傳統(tǒng)C++。

當(dāng)前的許多C++編譯器(如Visual C++、C++ Builder)都提供了對標(biāo)準(zhǔn)C++及傳統(tǒng)C++的支持,兩種版本的C++具有許多相同的功能,有大量相同的庫和函數(shù)(標(biāo)準(zhǔn)C++更多),其區(qū)分方法是頭文件和命名空間。

2.C++的特點(diǎn)

C++保留了C語言的原有特征和優(yōu)點(diǎn),支持C語言程序設(shè)計(jì)。同時(shí),C++對C語言進(jìn)行了擴(kuò)展,增加了面向?qū)ο蟮男绿卣骱驼Z言處理機(jī)制,支持面向?qū)ο蟮某绦蛟O(shè)計(jì),是C語言的超集。概括而言,C++具有以下特點(diǎn)。

① 高效性。C++允許直接訪問物理地址,支持直接對硬件編程和位(bit)操作,能夠?qū)崿F(xiàn)匯編語言的大部分功能,生成的目標(biāo)代碼質(zhì)量高,程序運(yùn)行效率高。C++雖然是一種高級語言,卻具有低級語言的許多功能,適用于編寫系統(tǒng)軟件。

② 靈活性。C++語言可以用于許多領(lǐng)域,在程序中幾乎可以不受限制地使用各種不同的程序設(shè)計(jì)技術(shù),設(shè)計(jì)出各種特殊類型的程序。

③ 豐富的運(yùn)算符和數(shù)據(jù)類型。C++提供了豐富的數(shù)據(jù)類型,不僅提供了int、char、bool、double、float等內(nèi)置數(shù)據(jù)類型,還允許用戶通過結(jié)構(gòu)、類、枚舉定義自定義數(shù)據(jù)類型,具有+、、、\、*、%、||、&、<<、>>、>、<、>>等豐富的運(yùn)算符,支持算術(shù)運(yùn)算、邏輯運(yùn)算、位操作等運(yùn)算。

④ 可移植性。C++語言具有較強(qiáng)的可移植性,程序能夠比較容易地從一種類型的計(jì)算機(jī)系統(tǒng)中移植到另一種類型的系統(tǒng)中。

⑤ 支持面向?qū)ο蟪绦蛟O(shè)計(jì)。C++對C語言的最大改進(jìn)就是融入了面向?qū)ο蟪绦蛟O(shè)計(jì)的思想,提供了把數(shù)據(jù)和數(shù)據(jù)操作封裝在一起的抽象機(jī)制,支持類、繼承、重載和多態(tài)等面向?qū)ο蟮某绦蛟O(shè)計(jì),使C++在軟件復(fù)用和大型軟件的構(gòu)造和維護(hù)等方面變得容易、高效,提高了軟件開發(fā)的效率和質(zhì)量。

總之,C++保留了C語言簡潔、高效和接近匯編語言等特點(diǎn),對C的類型系統(tǒng)進(jìn)行了改進(jìn)和擴(kuò)充,比C更安全、可靠。但C++最重要、最有意義的特征是支持面向?qū)ο蟮某绦蛟O(shè)計(jì)。

主站蜘蛛池模板: 富锦市| 庆元县| 潮安县| 武宣县| 铜川市| 聊城市| 关岭| 巩义市| 巴林右旗| 桐柏县| 建瓯市| 永兴县| 星座| 尉犁县| 如皋市| 合川市| 隆尧县| 乌鲁木齐县| 连云港市| 元氏县| 阳曲县| 天峨县| 福建省| 石门县| 乐业县| 阜新| 武夷山市| 齐河县| 塔城市| 文登市| 得荣县| 革吉县| 东莞市| 宁都县| 鱼台县| 汽车| 星座| 思南县| 大洼县| 金川县| 武定县|