成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

概括C++代碼詳解

開發 后端
C++代碼具有的靈活性和編譯操作性,在代碼風格方面表現得如此復雜:程序代碼也有風格,這算不得什么新鮮事了。

許多編程人員學習C++代碼總結經驗為,有的覺得C++語言是一門獨立的語言,并不是在C語言的基礎上,可以直接學習C++不必先從C下手,但是有的人就覺得C++這款編程語言不如人意。

誰也說不清C++代碼究竟能衍生出多少種迥異的風格,但我知道,有許多C++初學者在面對不同風格的C++代碼時,經常會誤以為自己看到的是好幾種完全不同的編程語言——僅此一點就足以提醒我們,研究和廓清C++語言風格的演化和發展規律已是當務之急了。

和文體學家們研究歷朝歷代文體變遷的工作相仿,研究C++語言風格的流變史也沒有什么捷徑可走。我們只能依據劉勰在《文心雕龍》中提倡的“原始以表末”[1]的研究方法,循著歷史的脈絡,推求代碼風格的來源,探尋風格演化的內因,并借以闡明技術發展的趨勢和規律。#t#

1.帶類的C——對C語言風格的因襲 
在1983年12月BjarneStroustrup采納RickMascitti的建議,將其發明的新語言命名為“C++”之前,人們一直用“帶類的C(CwithClasses)”來稱呼這種脫胎于C語言的,帶有數據抽象機制的“方言”。雖然帶類的C在本質上僅僅是一種可以被預處理程序Cpre轉換為傳統C語言代碼(這類似于我們在Oracle中見到的Pro*C語言的預處理過程)的擴展性語言,但它的確在風格上奠定了后來所有C++代碼的基礎。

  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++語言的設計和演化》。代碼中的new()其實是類stack的構造函數,這與后來的C++語言有很大的不同。顯而易見,帶類的C在風格上幾乎完整地承襲了C語言的衣缽。代碼中的聲明語句看上去與C語言一模一樣,class的結構也與C語言中struct的結構大致相仿。

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

另一方面,Stroustrup從Simula語言借用的類、派生、訪問控制等面向對象概念在帶類的C中牢牢地扎下了根。據Stroustrup介紹,他為C語言引入面向對象機制的本意在于尋找一種“合適的工具”[2],以便實現分布式系統或解決類似的復雜問題。

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

2. I/O流——C++的新形象
如果說C++語言的生身父母分別是C語言和Simula語言的話,那么,1984年出現的,借助操作符重載實現的I/O流技術就是C++這個幼童甩開父母的庇護,向新的代碼風格邁出的第一步了。

  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. };  

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

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

責任編輯:chenqingxiang 來源: blue1000.com
相關推薦

2010-01-25 14:31:07

C++類

2010-01-28 17:10:33

C++

2010-02-02 15:59:32

C++賦值函數

2010-01-25 18:05:40

C++語言

2021-12-21 15:31:10

C++語言指針

2011-04-20 09:50:45

Virtual

2010-02-06 13:42:36

C++單件模式

2010-02-02 11:16:28

C++異常

2023-11-09 23:56:21

2024-01-22 10:49:55

C++for循環

2023-10-30 10:29:50

C++最小二乘法

2009-09-17 16:53:15

C#數組

2011-03-30 17:20:18

C++引用

2024-01-18 10:27:30

C++引用函數

2010-02-01 16:13:15

C++繼承

2011-07-15 01:10:13

C++內存分配

2024-03-14 11:54:37

C++數據類型

2010-01-14 14:40:21

C++代碼

2011-05-18 18:05:47

C#C++

2011-05-18 17:56:38

C#C++
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕蜜臀av | 性视频一区 | 色小姐综合网 | 欧美激情一区二区三区 | 久草中文在线 | 伊人久久在线观看 | 欧美日韩亚洲国产综合 | 欧美黄在线观看 | 男女精品久久 | 国产麻豆乱码精品一区二区三区 | 99久热在线精品视频观看 | 日本精品视频一区二区三区四区 | 国产成人精品一区二区在线 | 精品一二区 | 国产成人精品久久 | 久久久久久一区 | 男女羞羞视频在线看 | 亚洲一区二区综合 | 精品一区久久 | 天天曰天天曰 | 国产精品久久久久av | 亚洲人成人一区二区在线观看 | 欧美成人精品一区二区男人看 | 精品一区二区久久久久久久网站 | 91久久精品国产 | 色精品| 请别相信他免费喜剧电影在线观看 | 欧美三区在线观看 | 国产欧美精品 | 国产免国产免费 | 羞羞视频在线观看 | 狠狠操av| 国产精品a级| 国产精品久久久久久久久久尿 | 国产女人精品视频 | 日韩在线视频精品 | 婷婷综合久久 | 日本精品一区二区三区在线观看视频 | 91视频精选 | 97人人草 | 婷婷综合激情 |