對(duì)C++語(yǔ)言入門(mén)簡(jiǎn)介
C++語(yǔ)言是建立在C語(yǔ)言至上的一門(mén)簡(jiǎn)單便捷的編程語(yǔ)言,C++語(yǔ)言的語(yǔ)法、特性、標(biāo)準(zhǔn)類(lèi)庫(kù)就已經(jīng)是一門(mén)非常高深的課程,所以在開(kāi)始學(xué)習(xí)的時(shí)候,必須要具備很強(qiáng)的謹(jǐn)慎態(tài)度和責(zé)任心。
像所有國(guó)家的議會(huì)或人民代表大會(huì)一樣通過(guò)沒(méi)完沒(méi)了的會(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)作一種全新的語(yǔ)言來(lái)學(xué)習(xí)[3]。這一說(shuō)法顯然是基于這樣一個(gè)事實(shí):標(biāo)準(zhǔn)C++語(yǔ)言已經(jīng)擁有了一種穩(wěn)定的、可以推廣的語(yǔ)言風(fēng)格,即,通過(guò)對(duì)STL等既有技術(shù)的肯定,ANSI/ISO委員會(huì)在1998年的標(biāo)準(zhǔn)中正式認(rèn)可了包括模板、容器類(lèi)、I/O流庫(kù)、異常處理等典型語(yǔ)言特征的現(xiàn)代C++風(fēng)格。
風(fēng)格的穩(wěn)定意味著語(yǔ)言本身的進(jìn)步和成熟,也意味著程序員們對(duì)C++的認(rèn)識(shí)必須上升到一個(gè)新的層次——那些至今還在編寫(xiě)僅由類(lèi)和C語(yǔ)言庫(kù)函數(shù)組成的C++代碼的程序員,一定會(huì)成為Stroustrup及其同仁們的取笑對(duì)象的。
Stroustrup的《C++程序設(shè)計(jì)語(yǔ)言》第3版對(duì)標(biāo)準(zhǔn)C++風(fēng)格做了最權(quán)威的闡釋。在Stroustrup等專(zhuān)家學(xué)者的號(hào)召下,越來(lái)越多的項(xiàng)目開(kāi)始編寫(xiě)符合標(biāo)準(zhǔn)C++風(fēng)格的代碼。這一點(diǎn)在許多開(kāi)放源代碼的項(xiàng)目中體現(xiàn)得特別明顯。
這多半是由于,使用C++語(yǔ)言的開(kāi)源項(xiàng)目大多都不會(huì)像大企業(yè)里的項(xiàng)目組那樣,在語(yǔ)言風(fēng)格上會(huì)受到公司背景或歷史習(xí)慣的羈絆。在具體的編程實(shí)踐中,開(kāi)
例如,在OpenOffice的源碼中,標(biāo)識(shí)符的前綴規(guī)范就相當(dāng)有特點(diǎn),連指針和引用類(lèi)型的變量都由不同的前綴字母區(qū)分;下面給出的Linux桌面管理器KDE 3.1.4的源代碼片斷則顯示出,開(kāi)發(fā)KDE的程序員在代碼風(fēng)格上或多或少受到了Java語(yǔ)言風(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;
 - };
 
語(yǔ)言風(fēng)格的變遷從一個(gè)側(cè)面反映了技術(shù)思想和產(chǎn)業(yè)需求的嬗變規(guī)律。從1979年Stroustrup完成第一個(gè)Cpre預(yù)處理程序算起,C++語(yǔ)言來(lái)到這個(gè)世界上已經(jīng)快滿(mǎn)25個(gè)年頭了。這是一種在實(shí)踐中誕生、成長(zhǎng)和發(fā)展起來(lái)的語(yǔ)言。也許,Stroustrup從一開(kāi)始就壓根兒也沒(méi)想把它設(shè)計(jì)成像Smalltalk那樣純粹的面向?qū)ο笳Z(yǔ)言。開(kāi)放性、高效率、兼容性和擴(kuò)展性的需求將C++語(yǔ)言塑造成了一種典型的多模式(Multiparadigm)語(yǔ)言。
無(wú)論是C++早期對(duì)Simula語(yǔ)言的繼承,還是后來(lái)對(duì)Smalltalk、Ada、Clu等語(yǔ)言的借鑒,無(wú)論是ANSI/ISO標(biāo)準(zhǔn)風(fēng)格的迅速普及,還是Visual C++ .NET在技術(shù)創(chuàng)新上的不懈努力,所有這些歷史變遷都說(shuō)明,C++在風(fēng)格上的多樣性主要源自C++語(yǔ)言本身“海納百川”的胸襟和氣概。
5年以后,當(dāng)C++步入而立之年的時(shí)候,它會(huì)給我們帶來(lái)新的驚喜嗎?我們還會(huì)看到更加新奇的C++語(yǔ)言風(fēng)格嗎?也許,沒(méi)有誰(shuí)能給出準(zhǔn)確的答案。但作為程序員,我們至少應(yīng)該知道:無(wú)論面對(duì)什么樣的軟件需求。
無(wú)論使用什么樣的思維方式,C++語(yǔ)言都賦予了我們選擇語(yǔ)言風(fēng)格的最大自由;當(dāng)我們真正理解了C++語(yǔ)言的精神實(shí)質(zhì)之后,這種自由也必將成為所有優(yōu)秀軟件和優(yōu)雅代碼的堅(jiān)實(shí)基礎(chǔ)。
【編輯推薦】















 
 
 
 
 
 
 