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