- C++面向?qū)ο蟪绦蛟O(shè)計(jì)
- 杜茂康等編著
- 1876字
- 2019-01-01 05:54:50
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ì)。
- 智能傳感器技術(shù)與應(yīng)用
- 人工免疫算法改進(jìn)及其應(yīng)用
- 自動控制原理
- 數(shù)據(jù)產(chǎn)品經(jīng)理:解決方案與案例分析
- 精通Excel VBA
- 最后一個(gè)人類
- 永磁同步電動機(jī)變頻調(diào)速系統(tǒng)及其控制(第2版)
- 大數(shù)據(jù)平臺異常檢測分析系統(tǒng)的若干關(guān)鍵技術(shù)研究
- 中國戰(zhàn)略性新興產(chǎn)業(yè)研究與發(fā)展·智能制造
- Troubleshooting OpenVPN
- 傳感器與新聞
- 網(wǎng)絡(luò)管理工具實(shí)用詳解
- Salesforce Advanced Administrator Certification Guide
- 數(shù)據(jù)要素:全球經(jīng)濟(jì)社會發(fā)展的新動力
- 無人駕駛感知智能