国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

C++程序設(shè)計(jì)語言編程風(fēng)格演變史

2019-11-17 05:18:10
字體:
供稿:網(wǎng)友

  程序代碼也有風(fēng)格,這算不得什么新鮮事。早在20世紀(jì)80年代,C語言程序員就必須在K&R風(fēng)格和ANSI風(fēng)格之間擇善而從。但平心而論,我確實(shí)沒有見過哪一種語言能像C++這樣,在代碼風(fēng)格方面表現(xiàn)得如此詭譎和難以捉摸:誰也說不清C++代碼究竟能衍生出多少種迥異的風(fēng)格,但我知道,有許多C++初學(xué)者在面對(duì)不同風(fēng)格的C++代碼時(shí),經(jīng)常會(huì)誤以為自己看到的是好幾種完全不同的編程語言——僅此一點(diǎn)就足以提醒我們,研究和廓清C++語言風(fēng)格的演化和發(fā)展規(guī)律已是當(dāng)務(wù)之急了。

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

   1. 帶類的C——對(duì)C語言風(fēng)格的因襲

  在1983年12月Bjarne Stroustrup采納Rick Mascitti的建議,將其發(fā)明的新語言命名為“C++”之前,人們一直用“帶類的C(C with Classes)”來稱呼這種脫胎于C語言的,帶有數(shù)據(jù)抽象機(jī)制的“方言”。雖然帶類的C在本質(zhì)上僅僅是一種可以被預(yù)處理程序CPRe轉(zhuǎn)換為傳統(tǒng)C語言代碼(這類似于我們?cè)?a href="http://www.survivalescaperooms.com/article.asp?typeid=171">Oracle中見到的Pro*C語言的預(yù)處理過程)的擴(kuò)展性語言,但它的確在風(fēng)格上奠定了后來所有C++代碼的基礎(chǔ)。

class stack {
char s[SIZE];
char* min;
char* top;
char* max;
void new();
public:
void push(char);
char pop();
};
  這段“帶類的C”代碼錄自Stroustrup所著的《C++語言的設(shè)計(jì)和演化》。代碼中的new()其實(shí)是類stack的構(gòu)造函數(shù),這與后來的C++語言有很大的不同。

   顯而易見,帶類的C在風(fēng)格上幾乎完整地承襲了C語言的衣缽。代碼中的聲明語句看上去與C語言一模一樣,class的結(jié)構(gòu)也與C語言中strUCt的結(jié)構(gòu)大致相仿,這些跡象反映出C++語言來源于C又盡量與C保持兼容的設(shè)計(jì)思想——這種設(shè)計(jì)思想既為C++的迅速普及提供了便利(C++語言的順利推廣顯然得益于C語言已有的龐大用戶群),也在C++的語言風(fēng)格中深深地烙上了C語言的印記,以至于在若干年后,當(dāng)C++語言已經(jīng)基本具備了“獨(dú)立人格”的時(shí)候,Stroustrup還不得不時(shí)常提醒人們要盡量拋開C語言的思維方式。

   另一方面,Stroustrup從Simula語言借用的類、派生、訪問控制等面向?qū)ο蟾拍钤趲ь惖腃中牢牢地扎下了根。據(jù)Stroustrup介紹,他為C語言引入面向?qū)ο髾C(jī)制的本意在于尋找一種“合適的工具”[2],以便實(shí)現(xiàn)分布式系統(tǒng)或解決類似的復(fù)雜問題。但無論怎樣,Stroustrup將C的高效和Simula的優(yōu)雅捆綁在一起的做法都在事實(shí)上為C++語言埋下了“雙重性格”的種子——很難說這不是C++語言風(fēng)格多樣化的直接誘因。

   2. I/O流——C++的新形象

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

ostream& Operator<<(ostream&s, const complex& z)
{
return s << '(' << z.real()
<< ',' << z.imag() << ')';
}
  上面幾行代碼來自Stroustrup所著《C++程序設(shè)計(jì)語言》中的示例程序。注重那一行由“<<”連接的代碼,I/O流、變量、字符常量在代碼中被巧妙地串聯(lián)在一起。從技術(shù)角度看,這種全新語法的引入彌補(bǔ)了C語言中printf()函數(shù)族缺乏類型安全機(jī)制和擴(kuò)展能力的弱點(diǎn)。從代碼風(fēng)格上說,“<<”等通俗易懂的運(yùn)算符大大改變了程序員對(duì)C++語言的第一印象。我自己第一次接觸C++ I/O流庫(kù)時(shí),就曾清楚地感覺到,一個(gè)試圖擺脫C語言風(fēng)格束縛的C++精靈正順著“<<”和“>>”組成的溪水“流淌”而來——這種行云流水般的代碼風(fēng)格在十幾年前就已經(jīng)顯示出了C++語言在塑造新形象、引進(jìn)新觀念方面的決心和勇氣。

   3. OWL和MFC——窗口環(huán)境下的風(fēng)格變異

  20世紀(jì)80年代末到90年代初,X Window、Mac OS、Windows等窗口環(huán)境的先后出現(xiàn)為程序設(shè)計(jì)提出了新的課題,而C++語言兼顧面向?qū)ο蠛蛡鹘y(tǒng)開發(fā)方法的特性無疑使其成為了窗口環(huán)境下編程語言的最佳選擇。一批基于C++語言的窗口框架不僅在商業(yè)上取得了成功,也在很大程度上改變了C++語言本身的風(fēng)格特點(diǎn)。

   最早在窗口開發(fā)中贏得大多數(shù)程序員青睞的C++框架是Borland公司于1992年內(nèi)置在Borland C++ 3.1中的OWL(Object Windows Library)框架庫(kù)。下面這段代碼取自Borland C++ 3.1的示例程序:

class TGDIDemoWindow : public TMDIFrame
{
public:
TGDIDemoWindow( LPSTR ATitle, LPSTR MenuName )
: TMDIFrame(ATitle, MenuName) {};
virtual void SetupWindow();
virtual void ArtyDemo( TMessage& ) =[CM_FIRST + ArtyDemoID];
virtual void Quit( TMessage& ) =[CM_FIRST + QuitID];
virtual void WMTimer( TMessage& ) =[WM_FIRST + WM_TIMER];
virtual void WMDestroy( TMessage& ) =[WM_FIRST + WM_DESTROY];
};
  為了解決窗口編程中最要害的消息映射問題,OWL的設(shè)計(jì)者為C++語言的成員函數(shù)引入了“=[…]”的古怪語法,這是許多用過Borland C++的程序員至今都無法忘懷的一種語言風(fēng)格。我承認(rèn),Borland公司在C++語言的發(fā)展初期為我們提供了最好的編譯器和最出色的集成開發(fā)環(huán)境(IDE),但Borland通過OWL框架為C++引入的另類語言風(fēng)格的確讓人不敢恭維(客觀地講,這筆賬也不應(yīng)全算在Borland頭上,因?yàn)镺WL的前身是Borland從White Water公司購(gòu)買的框架代碼)。

   就在Borland C++ 3.1統(tǒng)治市場(chǎng)兩年以后,Microsoft憑借其當(dāng)仁不讓的霸氣和聞名的Visual C++系列產(chǎn)品逐漸奪回了Windows開發(fā)工具市場(chǎng)的主導(dǎo)權(quán)。與Borland不同的是,Visual C++中的MFC(Microsoft Foundation Class)框架庫(kù)沒有向OWL那樣肆意篡改C++的語法,而是采用了下面這樣的方式來實(shí)現(xiàn)消息映射(代碼取自MSDN示例程序):


// Example for BEGIN_MESSAGE_MAP
BEGIN_MESSAGE_MAP( CMyWindow, CFrameWnd )
ON_WM_PAINT()
ON_COMMAND( IDM_ABOUT, OnAbout )
END_MESSAGE_MAP( )
  事實(shí)上,用MFC框架編寫的C++代碼在大量使用宏定義等預(yù)編譯指令的同時(shí),還把WIN32平臺(tái)下常見的匈牙利風(fēng)格(有關(guān)標(biāo)識(shí)符大小寫和前綴的書寫規(guī)范)發(fā)揮到了極限。這一點(diǎn)用不著我多費(fèi)口舌,許多程序員僅從代碼的大小寫特征上就能百分之百地確定代碼中是否使用了MFC框架。

   很遺憾,MFC為C++打造的語言風(fēng)格并沒有得到C++專家們的首肯。例如,包括Stroustrup在內(nèi)的許多學(xué)者都建議我們盡量少用甚至不用宏定義等預(yù)處理指令。在這一點(diǎn)上,MFC的做法顯然和專家們的論調(diào)背道而馳。應(yīng)當(dāng)說,是Microsoft的霸氣造就了MFC的巨大成功;但從純粹的語言學(xué)角度看,MFC在語言風(fēng)格上的貢獻(xiàn)遠(yuǎn)不如它在窗口框架技術(shù)方面的貢獻(xiàn)大。
  4. 模板——現(xiàn)代C++風(fēng)格的基礎(chǔ)

  Stroustrup于1988年首次公布了與模板(template)有關(guān)的語法設(shè)計(jì)。毫無疑問,這是一項(xiàng)對(duì)現(xiàn)代C++的語言風(fēng)格影響最大的技術(shù)改進(jìn)。模板的概念來自Clu語言,并綜合了Smalltalk和Ada語言中相關(guān)技術(shù)的優(yōu)點(diǎn)。1991年后,包含模板機(jī)制的開發(fā)環(huán)境(DEC C++、IBM C++、Borland C++等)陸續(xù)問世。但直到1995年STL(Standard Template Library)模板庫(kù)逐漸發(fā)展成熟以后,模板技術(shù)才在程序員中迅速普及開來。

   下面的例子取自SGI STL的示例代碼,它基本反映了使用模板技術(shù)后C++代碼的整體風(fēng)格:

template <class InputIterator, class T>
InputIterator find(InputIterator first,
InputIterator last, const T& value)
{
while (first != last && *first != value)
++first;
return first;
}
  在這樣的C++代碼中,除了少數(shù)幾個(gè)要害字和操作符以外,我們幾乎找不到多少C語言的痕跡了。模板技術(shù)兼顧了類型安全和編碼靈活性的雙重需求,但它同時(shí)也為C++語言引入了一種更加精妙但也較難理解(相對(duì)于沒有模板的代碼而言)的代碼風(fēng)格。許多傳統(tǒng)的C語言擁護(hù)者討厭這種風(fēng)格的代碼,但更多的新生代程序員對(duì)其鐘愛有加。1998年,在ANSI/ISO標(biāo)準(zhǔn)化委員會(huì)的支持下,STL被作為標(biāo)準(zhǔn)C++庫(kù)(Standard C++ Library)的一部分收入了C++國(guó)際標(biāo)準(zhǔn)之中。今天,以模板、異常等現(xiàn)代C++技術(shù)為代表的語言風(fēng)格也已在事實(shí)上成為了C++世界的“官方風(fēng)格”。

   5. ATL——COM時(shí)代的另類C++

  除了STL模板庫(kù)之外,還有一個(gè)與模板風(fēng)格相關(guān)的例子。下面的代碼片斷取自Visual C++自動(dòng)生成的ATL控件工程:

class ATL_NO_VTABLE CMyATLObj :
public IMyATLObj,
public ipersistStreamInitImpl
<CMyATLObj>,
public IOleControlImpl<CMyATLObj>,
public IOleObjectImpl<CMyATLObj>,
public IoleInPlaceActiveObjectImpl
<CMyATLObj>,
public IViewObjectExImpl<CMyATLObj>,
public IoleInPlaceObjectWindowlessImpl
<CMyATLObj>,
public IPersistStorageImpl<CMyATLObj>,
public IspecifyPropertyPagesImpl
<CMyATLObj>,
public IQuickActivateImpl<CMyATLObj>,
public IDataObjectImpl<CMyATLObj>,
public IProvideClassInfo2Impl
<&__uuidof(CMyATLObj), NULL>,
public CComControl<CMyATLObj>
......
  注重控件類CMyATLObj的代碼,CMyATLObj類居然是從N個(gè)接口類和控件類中派生出來的,類的聲明語句中隨處可見模板的身影——這就是Microsoft為我們?cè)O(shè)計(jì)的別具一格的ATL風(fēng)格的代碼了。之所以要不惜代價(jià)地大量使用模板、多重繼續(xù)等語言特性,這主要為了適應(yīng)COM、OLE、ActiveX等在架構(gòu)上本來就相對(duì)復(fù)雜的技術(shù)體系。但這樣一來,使用ATL的代碼在所有C++代碼中,就擁有了一副異乎平常的長(zhǎng)相了:到處都是尖括號(hào),到處都是以“I”打頭的標(biāo)識(shí)符,甚至還有多重尖括號(hào)的嵌套……假如要求一個(gè)剛學(xué)會(huì)C++語言的程序員馬上讀懂一大段ATL代碼,我想,用不了幾分鐘,他就會(huì)被代碼中那些晦澀、離奇的語言風(fēng)格折磨得精神崩潰了。

   6. 標(biāo)準(zhǔn)C++——一種全新的語言?

  C++語言的標(biāo)準(zhǔn)化進(jìn)程遠(yuǎn)遠(yuǎn)落后于語言本身的普及速度。1990年以后,ANSI/ISO的C++標(biāo)準(zhǔn)化委員會(huì)才將包括Stroustrup在內(nèi)的大批專家以及包括Apple、Borland、DEC、HP、IBM、Microsoft、Sun、Unisys在內(nèi)的知名公司召集在一起,像所有國(guó)家的議會(huì)或人民代表大會(huì)一樣通過沒完沒了的會(huì)議、討論和投票制定C++的國(guó)際標(biāo)準(zhǔn)。標(biāo)準(zhǔn)直到1998年9月才正式發(fā)布。在國(guó)際標(biāo)準(zhǔn)化組織的檔案庫(kù)里,C++標(biāo)準(zhǔn)的代號(hào)是ISO/IEC 14882:1998。

   Stroustrup建議我們把標(biāo)準(zhǔn)C++當(dāng)作一種全新的語言來學(xué)習(xí)[3]。這一說法顯然是基于這樣一個(gè)事實(shí):標(biāo)準(zhǔn)C++語言已經(jīng)擁有了一種穩(wěn)定的、可以推廣的語言風(fēng)格,即,通過對(duì)STL等既有技術(shù)的肯定,ANSI/ISO委員會(huì)在1998年的標(biāo)準(zhǔn)中正式認(rèn)可了包括模板、容器類、I/O流庫(kù)、異常處理等典型語言特征的現(xiàn)代C++風(fēng)格。風(fēng)格的穩(wěn)定意味著語言本身的進(jìn)步和成熟,也意味著程序員們對(duì)C++的熟悉必須上升到一個(gè)新的層次——那些至今還在編寫僅由類和C語言庫(kù)函數(shù)組成的C++代碼的程序員,一定會(huì)成為Stroustrup及其同仁們的取笑對(duì)象的。

   Stroustrup的《C++程序設(shè)計(jì)語言》第3版對(duì)標(biāo)準(zhǔn)C++風(fēng)格做了最權(quán)威的闡釋。在Stroustrup等專家學(xué)者的號(hào)召下,越來越多的項(xiàng)目開始編寫符合標(biāo)準(zhǔn)C++風(fēng)格的代碼。這一點(diǎn)在許多開放源代碼的項(xiàng)目中體現(xiàn)得非凡明顯。這多半是由于,使用C++語言的開源項(xiàng)目大多都不會(huì)像大企業(yè)里的項(xiàng)目組那樣,在語言風(fēng)格上會(huì)受到公司背景或歷史習(xí)慣的羈絆。在具體的編程實(shí)踐中,開源項(xiàng)目的程序員們一方面可以果斷地貫徹標(biāo)準(zhǔn)C++的語言風(fēng)格,另一方面也可以根據(jù)自己的喜好為代碼增添一些感情色彩。例如,在OpenOffice的源碼中,標(biāo)識(shí)符的前綴規(guī)范就相當(dāng)有特點(diǎn),連指針和引用類型的變量都由不同的前綴字母區(qū)分;下面給出的linux桌面治理器KDE 3.1.4的源代碼片斷則顯示出,開發(fā)KDE的程序員在代碼風(fēng)格上或多或少受到了java語言風(fēng)格的影響:


class delUser: public KDialogBase {
Q_OBJECT
public:
delUser(KUser *AUser, QWidget *parent = 0,
const char *name = 0);
bool getDeleteHomeDir()
{ return m_deleteHomeDir->isChecked(); }
bool getDeleteMailBox()
{ return m_deleteMailBox->isChecked(); }
private:
QCheckBox *m_deleteHomeDir;
QCheckBox *m_deleteMailBox;
};
  7. 讀不懂的代碼——兼容并包的語言風(fēng)格

  說到標(biāo)準(zhǔn)C++語言風(fēng)格,有必要給大家看一段非常古怪但也非常有趣的代碼。你看得懂下面這段C++代碼嗎?它是真正的C++代碼嗎?

%:include <iostream>
using namespace std;
%:define MAX 5
void main()
<%
int m<:MAX:>;
int i = 1;
for (i = 0; i < MAX; i++)
<%
m<:i:> = i;
if (i not_eq 3 and i < 5)
cout << i << endl;
%>
%>
  這是我自己編寫的一段代碼。你也許無法在Visual C++環(huán)境下運(yùn)行它,但它的語法的確符合1998年C++標(biāo)準(zhǔn)的規(guī)定。在GNU C++環(huán)境下,我曾成功地將其編譯為可執(zhí)行程序。

   簡(jiǎn)單說來,這段風(fēng)格詭異的C++代碼其實(shí)是根據(jù)C++標(biāo)準(zhǔn)中關(guān)于可替換標(biāo)記(Alternative Tokens)的規(guī)定而編寫的。該規(guī)定的設(shè)計(jì)初衷是要適應(yīng)歐洲某些國(guó)家的標(biāo)準(zhǔn)字符集缺少“{”、“#”等標(biāo)點(diǎn)符號(hào)(非凡是在一些傳統(tǒng)的終端設(shè)備上)的現(xiàn)狀。嚴(yán)格地講,這算不得一種真正的語言風(fēng)格,但類似的規(guī)定的確體現(xiàn)了ANSI/ISO委員會(huì)在語言設(shè)計(jì)上兼容并包的寬廣胸襟。

   8. C++Builder——Borland的復(fù)興之路

  Borland公司在發(fā)布了Borland C++ 3.1之后,就因?yàn)椴凰歼M(jìn)取而將C++開發(fā)工具的市場(chǎng)拱手讓給了Microsoft[4]。在經(jīng)歷了Borland C++ 4.0、4.5和5.0等版本的失敗后,1997年,Borland推出了全新的C++開發(fā)工具C++Builder。這個(gè)在市場(chǎng)上為Borland挽回了顏面的產(chǎn)品不但在界面風(fēng)格上與Borland的支柱產(chǎn)品Delphi別無二致,甚至還在產(chǎn)品內(nèi)部直接照搬了Delphi的VCL(Visual Component Library)庫(kù)。結(jié)果,使用C++Builder開發(fā)的代碼天生就受到了Delphi風(fēng)格的傳染,長(zhǎng)相酷似Pascal語言了(以下代碼取自C++Builder 6.0的示例代碼):

class TFormClrDlg : public TForm
{
published: // IDE-managed Components
TColorDialog *ColorDialog;
TButton *Button;
TPanel *Panel1;
void fastcall ButtonClick(TObject *Sender);
private: // User declarations
public: // User declarations
virtual fastcall TFormClrDlg(TComponent* Owner);
};
  說實(shí)話,盡管C++Builder在市場(chǎng)上的表現(xiàn)不錯(cuò),但我還是不喜歡Borland將C++語言與Delphi中的Object Pascal語言刻意混淆的做法。也許在Borland這種做法的背后有提高產(chǎn)品通用性、縮短產(chǎn)品開發(fā)周期等體面的理由,但使用C++Builder開發(fā)出的代碼在外表上已經(jīng)離標(biāo)準(zhǔn)C++風(fēng)格越來越遠(yuǎn)了。

   值得注重的是,Borland于2003年推出了其下一代C++開發(fā)工具 ——C++BuilderX。讓人哭笑不得的是,這一次Borland居然將C++開發(fā)環(huán)境構(gòu)筑在了用Java語言實(shí)現(xiàn)的PrimeTime平臺(tái)上,這多少將C++語言推向了一種極為尷尬的處境。不過,C++BuilderX也為我們帶來了一些好消息:在后續(xù)的版本中,C++BuilderX將集成vxWindows框架庫(kù)[5],在這種框架下開發(fā)的C++代碼顯然要比使用VCL的代碼具備更多的標(biāo)準(zhǔn)C++風(fēng)格。

   9. Visual C++ .NET——革命還是叛逆?

  Microsoft將C++引入.NET環(huán)境的舉動(dòng)其實(shí)比Borland還要激進(jìn)。單從風(fēng)格上說,使用Visual C++ .NET開發(fā)的代碼可能兼具M(jìn)FC、ATL、標(biāo)準(zhǔn)C++、.NET托管代碼等多種不同的風(fēng)格。其中,對(duì)C++語言本身影響最大的,當(dāng)然要數(shù).NET托管代碼為C++注入的若干新鮮血液了:

#using <mscorlib.dll>

using namespace System;
using namespace System::Reflection;
using namespace System::Security::Permissions;

public __value enum SomeStuff {
e1 = 1,
e17 = 17
};

[attribute(AttributeTargets::Class, AllowMultiple=true)]
public __gc class ABC {
public:
ABC(int __gc[]) {}
ABC() {}
ABC(int) {}
ABC(int, float) {}
ABC(SomeStuff) {}
ABC(String*) {}
int rgnField __gc [];
double rgdField __gc [];
double dField;
};
  上述代碼來自MSDN中的示例程序。看到Microsoft大刀闊斧地為C++語言引入的垃圾收集、Attribute屬性等新特性和新技術(shù),看到.NET托管代碼新奇得近乎離經(jīng)叛道的語言風(fēng)格,我不知道是應(yīng)該為Microsoft在發(fā)展通用語言平臺(tái)上的努力而歡呼雀躍,還是應(yīng)該為C++在C#語言陰影下日漸屈居.NET大戲中的配角而灰心喪氣。也許,語言風(fēng)格和程序員的感受在Microsoft眼中,都是些不值一提的小事,它們哪能和.NET的宏偉戰(zhàn)略及Microsoft的強(qiáng)大帝國(guó)相提并論呢?

   10. 回顧和展望

  語言風(fēng)格的變遷從一個(gè)側(cè)面反映了技術(shù)思想和產(chǎn)業(yè)需求的嬗變規(guī)律。從1979年Stroustrup完成第一個(gè)Cpre預(yù)處理程序算起,C++語言來到這個(gè)世界上已經(jīng)快滿25個(gè)年頭了。這是一種在實(shí)踐中誕生、成長(zhǎng)和發(fā)展起來的語言。也許,Stroustrup從一開始就壓根兒也沒想把它設(shè)計(jì)成像Smalltalk那樣純粹的面向?qū)ο笳Z言。開放性、高效率、兼容性和擴(kuò)展性的需求將C++語言塑造成了一種典型的多模式(Multiparadigm)語言。無論是C++早期對(duì)Simula語言的繼續(xù),還是后來對(duì)Smalltalk、Ada、Clu等語言的借鑒,無論是ANSI/ISO標(biāo)準(zhǔn)風(fēng)格的迅速普及,還是Visual C++ .NET在技術(shù)創(chuàng)新上的不懈努力,所有這些歷史變遷都說明,C++在風(fēng)格上的多樣性主要源自C++語言本身“海納百川”的胸襟和氣概。

   5年以后,當(dāng)C++步入而立之年的時(shí)候,它會(huì)給我們帶來新的驚喜嗎?我們還會(huì)看到更加新奇的C++語言風(fēng)格嗎?也許,沒有誰能給出準(zhǔn)確的答案。但作為程序員,我們至少應(yīng)該知道:無論面對(duì)什么樣的軟件需求,無論使用什么樣的思維方式,C++語言都賦予了我們選擇語言風(fēng)格的最大自由;當(dāng)我們真正理解了C++語言的精神實(shí)質(zhì)之后,這種自由也必將成為所有優(yōu)秀軟件和優(yōu)雅代碼的堅(jiān)實(shí)基礎(chǔ)。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 深州市| 新乡市| 兴化市| 固阳县| 荥阳市| 新安县| 洞口县| 惠水县| 寿宁县| 南宁市| 赤城县| 沅陵县| 云阳县| 南陵县| 盐源县| 阿坝县| 大埔县| 永川市| 永州市| 西乌| 新竹市| 定州市| 兖州市| 溆浦县| 阜新市| 富顺县| 阿拉尔市| 蓝田县| 定襄县| 博爱县| 冷水江市| 商都县| 汉川市| 萨嘎县| 米林县| 崇仁县| 勐海县| 青河县| 天祝| 拜城县| 磴口县|