董昌源+劉疆+王仁鶴
摘 要:The C++ Programming Language ,即為C++語言,C++語言是C語言的繼承,在C語言的基礎(chǔ)上,又對C語言的過程化程序設(shè)計(jì)進(jìn)行了優(yōu)化,既可以使用以抽象數(shù)據(jù)類型為特點(diǎn)的基于對象的程序設(shè)計(jì),又可以使用以繼承和多態(tài)為特點(diǎn)的面向?qū)ο蟮某绦蛟O(shè)計(jì)。C++語言不但完美地繼承了父類的C語言,還可以進(jìn)行基于面向?qū)ο筮^程化的程序設(shè)計(jì),因此,C++語言不僅擁有計(jì)算機(jī)高效運(yùn)行的實(shí)用性特征,而且還具有提高大規(guī)模程序的編程質(zhì)量與程序設(shè)計(jì)語言的問題描述的能力。
關(guān)鍵詞:C;C++;面向?qū)ο?/p>
在20世紀(jì)70年代中期,經(jīng)歷了第一種計(jì)算機(jī)高級語言誕生事件的Bjarne Stroustrup在使用Simula、ALGOL中,受到了Simula的類體系感、ALGOL的結(jié)構(gòu)的啟發(fā)后,想要實(shí)現(xiàn)一種編程簡單、正確可靠、運(yùn)行高效、可移植性強(qiáng)的編程軟件,于是,他以C為背景,以Simula框架的設(shè)計(jì)思路為新軟件的框架思想。1979年,Bjame Sgoustrup到了Bell實(shí)驗(yàn)室,開始將C改良為具有獨(dú)特類框架的CWC(C With Classes)。1983年,該語言的開發(fā)完畢,獲得巨大的成功。于是這個新興語言被命名為C++。
在那個時候的C++中,人們對類沒有什么具體的概念,只知道類是可以支持?jǐn)?shù)據(jù)封裝的工具,對象則是數(shù)據(jù)封裝的實(shí)現(xiàn)。而現(xiàn)在,面向?qū)ο蟮某绦蛟O(shè)計(jì)是將數(shù)據(jù)和對該數(shù)據(jù)進(jìn)行合法操作的一系列函數(shù)方法封裝在一起,這就是一個類。成員對象是被定義在這個類中的一個變量,每個類中可以包含若干私有成員、公有成員及保護(hù)成員。當(dāng)一個類被定義完畢,所有函數(shù)方法均封裝在其內(nèi)部,這個類就可以看成一個完整的實(shí)體單元使用。類內(nèi)部的工作方法被完美地隱藏起來,使用此類的用戶是看不到類是如何工作的,想要修改也沒有辦法,這就是類的封裝特點(diǎn)。
C++語言可以在現(xiàn)有的類的基礎(chǔ)上聲明新的類,新的類可以完美調(diào)用其聲明的類中的函數(shù),他可以在父類那里繼承所有非私有的屬性和方法,作為自己的成員,成為原有類的派生類,我們將被使用的那個類稱為父類,而這個新的類就是子類,這就是繼承的思想。通過繼承可以更有效地組織程序結(jié)構(gòu),明確類間關(guān)系,并且充分利用已有的類來完成更復(fù)雜、更深入的程序開發(fā),這就是類的繼承特點(diǎn)。
C++語言的執(zhí)行過程中,對于多態(tài)的理解在同一操作作用于不同的對象,可以有不同的解釋,也會產(chǎn)生不同的執(zhí)行結(jié)果。在運(yùn)行時,可以通過指向基類的指針來調(diào)用實(shí)現(xiàn)派生類中的方法。編譯時的多態(tài)性是通過重載來實(shí)現(xiàn)的。對于非虛的成員來說,系統(tǒng)在編譯時,根據(jù)傳遞的參數(shù)、返回的類型等信息決定實(shí)現(xiàn)何種操作。運(yùn)行時的多態(tài)性就是指直到系統(tǒng)運(yùn)行時,才根據(jù)實(shí)際情況決定實(shí)現(xiàn)何種操作。
C++語言的程序開發(fā)中為了方便測試,通過使用解釋型的執(zhí)行方式,使代碼的逐條語句依次執(zhí)行,以編譯型的啟動運(yùn)行的方式來生成程序最終的執(zhí)行代碼。在C++語言所修飾的類中,某些對象類所代表的事物或者概念都可以是抽象的。在使用Private修飾數(shù)據(jù)或者函數(shù)的時候,只有在類中加入這個數(shù)據(jù)或函數(shù)的聲明才被允許使用。類在與外部連接時,如果使用的是Public修飾詞,則本類與其他類都可以調(diào)用。在抽象的語言中,什么是對象是一個老生常談的話題。對象在筆者看來,就是主對客觀事物的某個實(shí)體進(jìn)行描述所形成的一個實(shí)例化的代號,它可以作為一個單位,可以作為一個系統(tǒng),這些元素共同組成了系屬性,屬性和服務(wù)方法是構(gòu)成對象的兩種要素,屬性的實(shí)質(zhì)是一個存儲數(shù)據(jù)的數(shù)據(jù)項(xiàng),服務(wù)的實(shí)質(zhì)是一個操作方法序列。
程序生成是編程平臺將源碼C++代碼轉(zhuǎn)換成計(jì)算機(jī)可以識別的計(jì)算機(jī)語言,并將這種語言翻譯變成可以運(yùn)行的應(yīng)用程序的過程。如果程序代碼不出現(xiàn)問題,編譯的結(jié)果也是沒有ERROR,那么通常一個debug功能鍵即可搞定這個過程。但在計(jì)算機(jī)運(yùn)行的過程中該過程實(shí)際上分成兩個步驟:
第一步:是對程序使用編譯器Compiler進(jìn)行編譯,編譯器將C++語句轉(zhuǎn)換成機(jī)器碼。
第二步:使用鏈接器Linker對程序進(jìn)行鏈接,鏈接器將編譯獲得機(jī)器碼與C++庫中的代碼進(jìn)行匹配,如果查詢到了相關(guān)的匹配語句,計(jì)算機(jī)則執(zhí)行這段程序,并輸出結(jié)果并通過機(jī)器碼返還給我們,計(jì)算機(jī)再通過解讀變成我們能看懂的東西。
關(guān)鍵字(KeyWord)是整個語言范圍內(nèi)預(yù)先保留的標(biāo)識符,又稱為“保留字”,就是已被此類語言本身使用,不能作其他用途使用的字。例如,關(guān)鍵字不能用作變量名、函數(shù)名等標(biāo)識符,在C的內(nèi)庫中由ISO標(biāo)準(zhǔn)定義的C語言關(guān)鍵字共32個。而在C++語言中,關(guān)鍵字的含義和范圍又更上一層樓,每個C++關(guān)鍵字都有特殊的含義。關(guān)鍵字通過預(yù)處理后,C++的內(nèi)庫中由ISO標(biāo)準(zhǔn)定義的C++語言的63個關(guān)鍵字在Preprocessing-token區(qū)中出來被取出來,標(biāo)記為處理記號,其余的標(biāo)識符則作為記號(Token),用于對象、函數(shù)、類型、命名空間的聲。
總的來說,C語言是結(jié)構(gòu)化和模塊化的面向過程的語言,C++語言是面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。C++語言是C語言的超集,類似于在高中的時候?qū)W會了高中數(shù)學(xué),那么小學(xué)、初中數(shù)學(xué)也就不成問題了。在編程思想上略有區(qū)別,C語言強(qiáng)調(diào)程序的功能以及程序是否是是基于過程和以函數(shù)為中心的,而C++語言是面向?qū)ο蟮?,注重程序?nèi)部的分層、分類,類與類之間的關(guān)系,以及使用到面向?qū)ο蟮姆绞剿伎己途幊谭椒?,希望大家引起注意?/p>
參考文獻(xiàn):
[1] 錢能. C++程序設(shè)計(jì)教程(第2版)[M].北京:清華大學(xué)出版社,2005.
[2] 劉晶,裘旭光. C++語言程序設(shè)計(jì)[M].北方交通大學(xué)出版社,2003.
[3] 蘇小紅,孫志崗,陳惠鵬. C語言大學(xué)實(shí)用教程[M].北京:電子工業(yè)出版社,2013.