日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
概括C++代碼詳解

許多編程人員學(xué)習(xí)C++代碼總結(jié)經(jīng)驗(yàn)為,有的覺(jué)得C++語(yǔ)言是一門獨(dú)立的語(yǔ)言,并不是在C語(yǔ)言的基礎(chǔ)上,可以直接學(xué)習(xí)C++不必先從C下手,但是有的人就覺(jué)得C++這款編程語(yǔ)言不如人意。

誰(shuí)也說(shuō)不清C++代碼究竟能衍生出多少種迥異的風(fēng)格,但我知道,有許多C++初學(xué)者在面對(duì)不同風(fēng)格的C++代碼時(shí),經(jīng)常會(huì)誤以為自己看到的是好幾種完全不同的編程語(yǔ)言——僅此一點(diǎn)就足以提醒我們,研究和廓清C++語(yǔ)言風(fēng)格的演化和發(fā)展規(guī)律已是當(dāng)務(wù)之急了。

和文體學(xué)家們研究歷朝歷代文體變遷的工作相仿,研究C++語(yǔ)言風(fēng)格的流變史也沒(méi)有什么捷徑可走。我們只能依據(jù)劉勰在《文心雕龍》中提倡的“原始以表末”[1]的研究方法,循著歷史的脈絡(luò),推求代碼風(fēng)格的來(lái)源,探尋風(fēng)格演化的內(nèi)因,并借以闡明技術(shù)發(fā)展的趨勢(shì)和規(guī)律。#t#

1.帶類的C——對(duì)C語(yǔ)言風(fēng)格的因襲 
在1983年12月BjarneStroustrup采納RickMascitti的建議,將其發(fā)明的新語(yǔ)言命名為“C++”之前,人們一直用“帶類的C(CwithClasses)”來(lái)稱呼這種脫胎于C語(yǔ)言的,帶有數(shù)據(jù)抽象機(jī)制的“方言”。雖然帶類的C在本質(zhì)上僅僅是一種可以被預(yù)處理程序Cpre轉(zhuǎn)換為傳統(tǒng)C語(yǔ)言代碼(這類似于我們?cè)贠racle中見(jiàn)到的Pro*C語(yǔ)言的預(yù)處理過(guò)程)的擴(kuò)展性語(yǔ)言,但它的確在風(fēng)格上奠定了后來(lái)所有C++代碼的基礎(chǔ)。

 
 
 
  1. class stack {  
  2. char s[SIZE];  
  3. char* min;  
  4. char* top;  
  5. char* max;  
  6. void new();  
  7. public:  
  8. void push(char);  
  9. char pop();  
  10. };  

這段“帶類的C”代碼錄自Stroustrup所著的《C++語(yǔ)言的設(shè)計(jì)和演化》。代碼中的new()其實(shí)是類stack的構(gòu)造函數(shù),這與后來(lái)的C++語(yǔ)言有很大的不同。顯而易見(jiàn),帶類的C在風(fēng)格上幾乎完整地承襲了C語(yǔ)言的衣缽。代碼中的聲明語(yǔ)句看上去與C語(yǔ)言一模一樣,class的結(jié)構(gòu)也與C語(yǔ)言中struct的結(jié)構(gòu)大致相仿。

這些跡象反映出C++語(yǔ)言來(lái)源于C又盡量與C保持兼容的設(shè)計(jì)思想——這種設(shè)計(jì)思想既為C++的迅速普及提供了便利(C++語(yǔ)言的順利推廣顯然得益于C語(yǔ)言已有的龐大用戶群),也在C++的語(yǔ)言風(fēng)格中深深地烙上了C語(yǔ)言的印記,以至于在若干年后,當(dāng)C++語(yǔ)言已經(jīng)基本具備了“獨(dú)立人格”的時(shí)候,Stroustrup還不得不時(shí)常提醒人們要盡量拋開(kāi)C語(yǔ)言的思維方式。

另一方面,Stroustrup從Simula語(yǔ)言借用的類、派生、訪問(wèn)控制等面向?qū)ο蟾拍钤趲ь惖腃中牢牢地扎下了根。據(jù)Stroustrup介紹,他為C語(yǔ)言引入面向?qū)ο髾C(jī)制的本意在于尋找一種“合適的工具”[2],以便實(shí)現(xiàn)分布式系統(tǒng)或解決類似的復(fù)雜問(wèn)題。

但無(wú)論怎樣,Stroustrup將C的高效和Simula的優(yōu)雅捆綁在一起的做法都在事實(shí)上為C++語(yǔ)言埋下了“雙重性格”的種子——很難說(shuō)這不是C++語(yǔ)言風(fēng)格多樣化的直接誘因。

2. I/O流——C++的新形象
如果說(shuō)C++語(yǔ)言的生身父母分別是C語(yǔ)言和Simula語(yǔ)言的話,那么,1984年出現(xiàn)的,借助操作符重載實(shí)現(xiàn)的I/O流技術(shù)就是C++這個(gè)幼童甩開(kāi)父母的庇護(hù),向新的代碼風(fēng)格邁出的第一步了。

 
 
 
  1. class TGDIDemoWindow : public TMDIFrame  
  2. {  
  3. public:  
  4. TGDIDemoWindow( LPSTR ATitle, LPSTR MenuName )  
  5. : TMDIFrame(ATitle, MenuName) {};  
  6. virtual void SetupWindow();  
  7. virtual void ArtyDemo( TMessage& ) =[CM_FIRST + ArtyDemoID];  
  8. virtual void Quit( TMessage& ) =[CM_FIRST + QuitID];  
  9. virtual void WMTimer( TMessage& ) =[WM_FIRST + WM_TIMER];  
  10. virtual void WMDestroy( TMessage& ) =[WM_FIRST + WM_DESTROY];  
  11. };  

上面幾行代碼來(lái)自Stroustrup所著《C++程序設(shè)計(jì)語(yǔ)言》中的示例程序。注意那一行由“<<”連接的代碼,I/O流、變量、字符常量在代碼中被巧妙地串聯(lián)在一起。從技術(shù)角度看,這種全新語(yǔ)法的引入彌補(bǔ)了C++代碼中的printf()函數(shù)族缺乏類型安全機(jī)制和擴(kuò)展能力的弱點(diǎn)。

從代碼風(fēng)格上說(shuō),“<<”等通俗易懂的運(yùn)算符大大改變了程序員對(duì)C++語(yǔ)言的第一印象。我自己第一次接觸C++ I/O流庫(kù)時(shí),就曾清晰地感覺(jué)到,一個(gè)試圖擺脫C語(yǔ)言風(fēng)格束縛的C++代碼正順著“<<”和“>>”組成的溪水“流淌”而來(lái)——這種行云流水般的代碼風(fēng)格在十幾年前就已經(jīng)顯示出了C++語(yǔ)言在塑造新形象、引進(jìn)新觀念方面的決心和勇氣。


網(wǎng)頁(yè)標(biāo)題:概括C++代碼詳解
分享路徑:http://m.5511xx.com/article/djpdopg.html