• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            正午陽(yáng)光

            初學(xué)C++,希望能得到大家的支持!
            posts - 7, comments - 33, trackbacks - 0, articles - 0

            2006年5月24日

            for(int val=1;val<=10;++val)
            ??????? sum+=val;
            重述一下for語(yǔ)句的執(zhí)行過(guò)程:
            1、創(chuàng)建val并初始化為1
            2、測(cè)試val是否小于式等于10
            3、如果val 小于或等于10,則執(zhí)行for循環(huán)體,把val加到sum中。如果val大于10就退出循環(huán),接著執(zhí)行for語(yǔ)句體后的第一條語(yǔ)句。
            4、val遞增
            5、重復(fù)第二步的測(cè)試,只要條件為真,就繼續(xù)執(zhí)行其余步驟。
            這里要注意的是如果條件為真的話,程序是先執(zhí)行了循環(huán)體sum+=val再執(zhí)行++val。
            還有就是退出for循環(huán)后,變量val就不可再訪問(wèn),循環(huán)終止后再使用val 是非法的,當(dāng)然并不是所有的編譯器都是這樣。在C++標(biāo)準(zhǔn)化之前在循環(huán)體外使用是可以的,但標(biāo)準(zhǔn)化之后就不可以了,要注意新舊教材的區(qū)別。
            這次關(guān)于C++的學(xué)習(xí)筆記就寫(xiě)這么多了。

            posted @ 2006-05-24 23:54 snake 閱讀(715) | 評(píng)論 (0)編輯 收藏

            2005年11月28日

            #include<iostream.h>
            int main()
            {
             int x,i=3;
             x=(++i)+(++i)+(++i);
             cout<<x<<endl;
             return 0;
            }
            今天從一個(gè)群里跟幾個(gè)朋友討論了一下這個(gè)程序,我感覺(jué)應(yīng)該是18,可是在VC++6.0上編譯的結(jié)果是16。

            posted @ 2005-11-28 22:04 snake 閱讀(800) | 評(píng)論 (18)編輯 收藏

            2005年11月18日

            我在上篇中“盤(pán)點(diǎn)”了TCPL和D&E以及入門(mén)教程、高效和健壯編程、模板和泛型編程等方面共十幾本C++好書(shū)。冬去春來(lái),讓我們繼續(xù)C++書(shū)籍精彩之旅J

            標(biāo)準(zhǔn)庫(kù)

            當(dāng)我還在研究院工作時(shí),與同院另外兩家研究所合作開(kāi)發(fā)過(guò)一個(gè)大型水利樞紐調(diào)度集成項(xiàng)目。我們?nèi)臆浖到y(tǒng)之間都要相互通信。在調(diào)試通訊模塊時(shí),細(xì)心的客戶(一名好學(xué)的系統(tǒng)管理員)發(fā)現(xiàn)對(duì)于同一通信規(guī)約的解釋代碼,我的不超過(guò)30行,而對(duì)方的則超過(guò)了150行且很難看懂。這位系統(tǒng)管理員很納悶,我說(shuō)大家編程風(fēng)格和習(xí)慣不一樣,我使用了標(biāo)準(zhǔn)庫(kù),而他使用了傳統(tǒng)C編程風(fēng)格以及他所習(xí)慣的另外一些技術(shù)。

            別誤會(huì)!我絕無(wú)貶低這位合作伙伴的意思。事實(shí)上,我對(duì)那些真正有著深厚的C編程功力的程序員常常懷有欽佩之心。畢竟,C++能有今天的成功在很大程度上緣于它深深地植根于C。作為一名C++程序員,倘若不熟悉C++中的C,我往往會(huì)認(rèn)為他的基本功是不扎實(shí)的,他的技術(shù)底氣是不足的。

            不過(guò)話又說(shuō)回來(lái),C++是一種多范型(paradigm)編程語(yǔ)言,具體采用哪種編程風(fēng)格,專(zhuān)業(yè)程序員應(yīng)該知道視具體情況而定。作為一名經(jīng)常需要在現(xiàn)場(chǎng)做即興開(kāi)發(fā)的項(xiàng)目負(fù)責(zé)人,為了短平快地解決當(dāng)務(wù)之急,我習(xí)慣盡量采用現(xiàn)有的庫(kù)(和組件)。效率(以及強(qiáng)健性)久經(jīng)驗(yàn)證的C++標(biāo)準(zhǔn)庫(kù)已經(jīng)擺在那兒了,何樂(lè)而不用呢?

            Nicolai M. Josuttis, The C++ Standard Library: A Tutorial and Reference
            《C++標(biāo)準(zhǔn)程序庫(kù):自修教程與參考手冊(cè)》,華中科技大學(xué)出版社

            這是一本百科全書(shū)式的C++標(biāo)準(zhǔn)庫(kù)著作,是一本需要一再查閱的參考大全。它在完備性、細(xì)致性以及精確性方面都是無(wú)與倫比的。本書(shū)詳細(xì)介紹了每一標(biāo)準(zhǔn)庫(kù)組件的規(guī)格和用法,內(nèi)容涵蓋包括流和本地化在內(nèi)的整個(gè)標(biāo)準(zhǔn)庫(kù)而不僅僅是STL。正如本書(shū)副標(biāo)題所示,它首先適合作為教程閱讀,爾后又可用作參考手冊(cè)。

            淺顯易懂的寫(xiě)作風(fēng)格使得這本書(shū)非常易讀。如果你希望學(xué)習(xí)標(biāo)準(zhǔn)庫(kù)的用法并盡可能地發(fā)揮其潛能,那你必須擁有這本書(shū)。正如網(wǎng)絡(luò)上所言,這本書(shū)不僅僅應(yīng)該擺在你的書(shū)櫥中,更應(yīng)該放到你的電腦桌上。我向每一位職業(yè)C++程序員強(qiáng)烈推薦。

            Angelika Langer, Klaus Kreft, Standard C++ IOStreams and Locales: Advanced Programmer's Guide and Reference
            《標(biāo)準(zhǔn)C++輸入輸出流與本地化》,人民郵電出版社

            C++標(biāo)準(zhǔn)庫(kù)由STL、流和本地化三部分構(gòu)成。關(guān)于STL的書(shū)市面上已經(jīng)有不少,但罕見(jiàn)流和本地化方面的專(zhuān)著。本書(shū)是這兩個(gè)領(lǐng)域中最優(yōu)秀的一本,迄今為止沒(méi)有任何一本書(shū)比這一本更全面詳盡地討論了流和本地化。如果你不滿足于停留在“會(huì)用”流庫(kù)的層面,千萬(wàn)不要錯(cuò)過(guò)它。

            2001年夏天,我草草翻閱過(guò)這本書(shū)的中文版,從內(nèi)容到包裝都給我留下了比較深刻的印象 — 不過(guò)負(fù)面的居多一些。2003年秋天,無(wú)意中得知某網(wǎng)絡(luò)書(shū)店正以超低價(jià)格甩賣(mài)這本書(shū)的中譯本,情不自禁,一陣唏噓。

            Scott Meyers, Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library
            《Effective STL(影印版)》,中國(guó)電力出版社

            讀完Scott 的《Effective C++》和《More Effective C++》的中譯本之后,我一直期待這本書(shū)的中文版。我從潘愛(ài)民先生的個(gè)人主頁(yè)上了解到,他和他的合作伙伴似乎早已完成了這本書(shū)的翻譯工作,可惜至今市面上仍不得見(jiàn)。幸運(yùn)的是,我們可以看到它的原版。

            本書(shū)是使用STL的程序員必讀之作。在這本書(shū)中,Scott向我們講述STL容器和算法的工作機(jī)制以及如何以最佳方式使用它們。和Scott的其他作品一樣,這本書(shū)的寫(xiě)作風(fēng)格清晰、精確,具有極佳的可讀性。看過(guò)這本書(shū)以后,我想你也許會(huì)和我以及其他C++程序員一樣產(chǎn)生這樣的想法:Scott什么時(shí)候會(huì)寫(xiě)出一本“More Effective STL”?

            關(guān)于STL,我還提醒你留心Matthew H. Austern的《Generic Programming and the STL: Using and Extending the C++ Standard Template Library》(《泛型編程與STL》,中國(guó)電力出版社)。這本書(shū)散發(fā)著濃厚的學(xué)院氣息。Andrew Koenig和Barbara Moo在《Accelerated C++: Practical Programming by Example》一書(shū)末尾鄭重推薦另外兩本進(jìn)階好書(shū)(除了他們自己的《Ruminations on C++》外),其中一本是TCPL,另外一本就是本書(shū)!

            網(wǎng)絡(luò)編程

            在網(wǎng)絡(luò)編程時(shí)代,C++應(yīng)該扮演著怎樣的角色,讓ACE(Adaptive Communications Environment)來(lái)告訴你。

            Douglas C. Schmidt, Stephen D. Huston, C++ Network Programming, Volume 1: Mastering Complexity with ACE and Patterns
            Douglas C. Schmidt, Stephen D. Huston, C++ Network Programming, Volume 2: Systematic Reuse with ACE and Frameworks
            《C++網(wǎng)絡(luò)編程,卷1:運(yùn)用ACE和模式消除復(fù)雜性》,華中科技大學(xué)出版社
            《C++網(wǎng)絡(luò)編程,卷2:基于 ACE 和框架的系統(tǒng)化復(fù)用》,電子工業(yè)出版社

            采用C++進(jìn)行企業(yè)級(jí)網(wǎng)絡(luò)編程,目前ACE(以及這兩本書(shū))是一個(gè)值得考慮的選擇。ACE是一個(gè)面向?qū)ο蟆⒖缙脚_(tái)、開(kāi)放源碼的網(wǎng)絡(luò)編程框架,目標(biāo)在于構(gòu)建高性能網(wǎng)絡(luò)應(yīng)用和中間件。Douglas是ACE的創(chuàng)始人,Stephen則已為ACE提供了數(shù)年的技術(shù)支持和顧問(wèn)服務(wù),兩位都是ACE社群(是的,ACE的影響和實(shí)際應(yīng)用的程度已經(jīng)形成了一個(gè)社群)的專(zhuān)家。

            ACE并不單單被大學(xué)和研究所追捧,它已經(jīng)被成功地應(yīng)用于世界上成千上萬(wàn)個(gè)商業(yè)應(yīng)用中。在電信、宇航、醫(yī)藥和財(cái)經(jīng)領(lǐng)域的網(wǎng)絡(luò)系統(tǒng)中,ACE已經(jīng)并繼續(xù)發(fā)揮著重要的作用。如果你準(zhǔn)備開(kāi)發(fā)高性能通訊系統(tǒng),你應(yīng)該考慮考慮這一匯集世界頂尖專(zhuān)家智慧的成果。

            除了使用C++面向?qū)ο笤O(shè)計(jì)技術(shù)和模板等高級(jí)語(yǔ)言特性外,ACE還運(yùn)用了大量的模式。《C++網(wǎng)絡(luò)編程》卷1和卷2并不僅僅教你關(guān)于ACE的方方面面,它還會(huì)教給你模式和通用框架設(shè)計(jì)等高級(jí)技術(shù)等。所以,作為一名中、高級(jí)C++程序員,即使你很少進(jìn)行正兒八經(jīng)的C++網(wǎng)絡(luò)程序設(shè)計(jì),閱讀這兩本書(shū)同樣可以從中受益。

            是的,并非所有網(wǎng)絡(luò)應(yīng)用都要使用Web服務(wù)器(以及其他應(yīng)用服務(wù)器)和重量級(jí)組件模型,換個(gè)思路,它們或許也可以從輕量級(jí)的ACE組件中獲益。

            雜項(xiàng)

            以下這幾本書(shū)之所以被列入“雜項(xiàng)”單元,只是因?yàn)槲覜](méi)有考慮出更合適的歸類(lèi)方法,它們和上面的書(shū)籍一樣,值得一讀。

            Bruce Eckel, Thinking in C++, Volume 1: Introduction to Standard C++ (2nd Edition)
            Bruce Eckel, Thinking in C++, Volume 2: Practical Programming (Second Edition)
            《C++編程思想(第2版)第1卷:標(biāo)準(zhǔn)C++導(dǎo)引》,機(jī)械工業(yè)出版社
            《C++編程思想(英文版 第2版)》,機(jī)械工業(yè)出版社

            《Thinking in C++》的第1版于1996年榮獲“軟件研發(fā)”雜志評(píng)選的圖書(shū)震撼大獎(jiǎng)。最新推出的第2版對(duì)內(nèi)容進(jìn)行了大幅改寫(xiě)和調(diào)整,以反映C++標(biāo)準(zhǔn)化帶來(lái)的影響以及近幾年面向?qū)ο箢I(lǐng)域最新研究和實(shí)踐成果。“輸入輸入流”、“多重繼承”、“異常處理”和“運(yùn)行時(shí)類(lèi)型識(shí)別”等高級(jí)主題連同C++標(biāo)準(zhǔn)化以后增加的一些內(nèi)容則被放入第二卷中。Bruce是一名經(jīng)驗(yàn)豐富的C++講師和顧問(wèn),其培訓(xùn)和寫(xiě)作經(jīng)驗(yàn)都是世界一流水準(zhǔn),他的作品比那些“玩票”的技術(shù)人員寫(xiě)的東西更能吸引讀者。事實(shí)上,在同類(lèi)圖書(shū)中,對(duì)于大多數(shù)讀者而言,這本書(shū)的可讀性要超過(guò)TCPL和《C++ Primer》。順帶一提,訪問(wèn)作者的站點(diǎn),你可以先睹第二卷的風(fēng)采。

            Andrew Koenig, Barbara E. Moo, Ruminations on C++: A Decade of Programming Insight and Experience
            《C++沉思錄》,人民郵電出版社

            Andrew是世界上屈指可數(shù)的C++專(zhuān)家。這是一本關(guān)于C++編程思想和程序設(shè)計(jì)技術(shù)而非語(yǔ)言細(xì)節(jié)的著作。如果你已經(jīng)具有一定的基礎(chǔ),這本書(shū)將教你在進(jìn)行C++編程時(shí)應(yīng)該怎樣思考,應(yīng)該如何表達(dá)解決方案。整本書(shū)技術(shù)表達(dá)透徹,文字通俗易懂。Bjarne這樣評(píng)價(jià)這本書(shū):本書(shū)遍布“C++是什么、C++能夠做什么”的真知灼見(jiàn)。

            Stanley B. Lippman, Inside The C++ Object Model
            《深度探索C++對(duì)象模型》,華中科技大學(xué)出版社
            《深度探索C++對(duì)象模型(影印版)》,中國(guó)電力出版社

            從編譯器的角度觀察C++可以使你知其然并知其所以然。本書(shū)探討了大量的C++面向?qū)ο蟪绦蛟O(shè)計(jì)的底層運(yùn)作機(jī)制,包括構(gòu)造函數(shù)、函數(shù)、臨時(shí)對(duì)象、繼承、虛擬、模板的實(shí)例化、異常處理、運(yùn)行期類(lèi)型識(shí)別等,另外還介紹了一些在實(shí)現(xiàn)C++對(duì)象模型過(guò)程中做出的權(quán)衡折衷。喜歡刨根問(wèn)底的C++程序員不要錯(cuò)過(guò)這本書(shū)。

            Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns: Elements of Reusable Object-Oriented software
            《設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》,機(jī)械工業(yè)出版社
            《設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)(英文版)》,機(jī)械工業(yè)出版社

            設(shè)計(jì)可復(fù)用的面向?qū)ο蟮能浖阈枰莆赵O(shè)計(jì)模式。本書(shū)并非專(zhuān)為C++程序員而寫(xiě),但它采用了C++(以及Smalltalk)作為主要示例語(yǔ)言,C++程序員尤其易于從中受益。四位作者都是國(guó)際公認(rèn)的面向?qū)ο筌浖I(lǐng)域?qū)<遥麄儗⒚嫦驅(qū)ο筌浖脑O(shè)計(jì)經(jīng)驗(yàn)作為設(shè)計(jì)模式詳細(xì)記錄下來(lái)。這本書(shū)影響是如此深遠(yuǎn),以至于四位作者以及本書(shū)都被昵稱(chēng)為GoF(Gang of Four)。本書(shū)學(xué)院氣息濃厚,行文風(fēng)格嚴(yán)謹(jǐn)簡(jiǎn)潔,雖然它不如某些講解模式的書(shū)籍易讀,但真正要精準(zhǔn)地理解設(shè)計(jì)模式,本書(shū)是終極權(quán)威。學(xué)習(xí)設(shè)計(jì)模式,這本書(shū)需要一而再、再而三的咀嚼。順帶一句:請(qǐng)將設(shè)計(jì)模式化作開(kāi)拓思維的鑰匙,切莫成為封閉思維的枷鎖。

            還有一些C++好書(shū)值得一讀,恕此處無(wú)法一一列出。例如John Lakos的著作《Large-Scale C++ Software Design》(《大規(guī)模C++程序設(shè)計(jì)》,中國(guó)電力出版社)和侯捷先生的《STL 源碼剖析》(華中科技大學(xué)出版社)等。

            《STL 源碼剖析》是一本很有特色的書(shū),但我認(rèn)為它還可以更好。我個(gè)人期待侯捷先生自第一版發(fā)行以來(lái)經(jīng)過(guò)對(duì)模板技術(shù)的沉淀和再思考之后,再寫(xiě)一本剖析得更深入、更透徹并且更全面的“第二版”。遺憾的是,侯捷先生在完成《C++ Templates: The Complete Guide》一書(shū)的翻譯后似乎決定暫時(shí)告別模板、泛型編程和STL領(lǐng)域。

            2004年3月31日補(bǔ)充:我目前最常查閱的兩本參考書(shū)是《C++標(biāo)準(zhǔn)程序庫(kù)》和《STL源碼剖析》。當(dāng)然了,這與我年內(nèi)的寫(xiě)作計(jì)劃有很大的關(guān)系。

            使用C++成功開(kāi)發(fā)大規(guī)模軟件系統(tǒng),不僅需要很好地理解大多數(shù)C++書(shū)籍中講述的邏輯設(shè)計(jì)問(wèn)題,更需要掌握《大規(guī)模C++程序設(shè)計(jì)》中講述的物理設(shè)計(jì)技術(shù)。當(dāng)然,這本書(shū)的確有點(diǎn)過(guò)時(shí)了,不過(guò),如果你的精力和金錢(qián)都比較寬綽,買(mǎi)一本看看并無(wú)壞處。

            至此,我想有必要聲明一下,有一些(好)書(shū)沒(méi)有得到推薦,主要原因如下:

            * 以上這些書(shū)已經(jīng)足夠多、足夠好了。
            * 我不會(huì)推薦通過(guò)正常渠道很難購(gòu)買(mǎi)到的書(shū)籍 — 不管是中文版還是英文版。
            * 作(譯)者名氣大小不影響我的推薦。我們是在看書(shū),不是看人。
            * 我不會(huì)推薦我從來(lái)沒(méi)有看過(guò)的書(shū)。我至少要看過(guò)其中的某個(gè)版本(包括電子檔)。這個(gè)“看”,一般指“認(rèn)真閱讀”,不過(guò)有一些也只能算是“瀏覽”。

            結(jié)語(yǔ)

            作為一名普通技術(shù)寫(xiě)譯者,我深知技術(shù)創(chuàng)作和翻譯的艱辛(和快樂(lè)),并多多少少了解一些有關(guān)技術(shù)書(shū)籍創(chuàng)作、翻譯、制作、出版以及市場(chǎng)推介背后的細(xì)節(jié)。今天,我不會(huì)再對(duì)一本看上去差強(qiáng)人意的圖書(shū)信口開(kāi)河。羅列同一本書(shū)的各種版本的用意只在于為你多提供一些信息,讓你多一種選擇。

            在本文成文的后期,我給Bjarne寫(xiě)了一封信,請(qǐng)教如果他來(lái)寫(xiě)這篇文章會(huì)怎么寫(xiě)。他給了我簡(jiǎn)明扼要的建議。在肯定以上列出的絕大部分圖書(shū)都是世界頂尖水平的C++著作的同時(shí),Bjarne提醒我別忘了向?qū)<壹?jí)程序員推薦《The C++ Standard : Incorporating Technical Corrigendum No. 1》。這本書(shū)是 C++標(biāo)準(zhǔn)規(guī)范的“圖書(shū)版”,Bjarne親自為之作序。

            Bjarne還友好地提醒我,在我的推薦列表中沒(méi)有哪一本有助于C++程序員進(jìn)行Windows編程 — 這正是我的本意。在這篇文章中,我只推薦、點(diǎn)評(píng)平臺(tái)中立的C++著作(網(wǎng)絡(luò)編程除外) — 和操作系統(tǒng)無(wú)關(guān),和集成開(kāi)發(fā)環(huán)境無(wú)關(guān),我甚至幻想它們和編譯器也無(wú)關(guān)。你可以根據(jù)業(yè)務(wù)開(kāi)發(fā)需要,選讀自己喜愛(ài)的領(lǐng)域相關(guān)的C++書(shū)籍。

            說(shuō)到“系統(tǒng)無(wú)關(guān)、平臺(tái)中立”,我不由得想起了“抽象層”的概念。開(kāi)發(fā)實(shí)際應(yīng)用的C++程序員通常工作于特定操作系統(tǒng)、特定開(kāi)發(fā)環(huán)境和特定業(yè)務(wù)領(lǐng)域之中,而對(duì)標(biāo)準(zhǔn)C++和C++標(biāo)準(zhǔn)庫(kù)扎實(shí)而深刻的把握,無(wú)疑是你得以在不同的操作系統(tǒng)、不同的開(kāi)發(fā)環(huán)境以及不同的業(yè)務(wù)領(lǐng)域之間縱橫馳騁的“抽象”本錢(qián)。

            posted @ 2005-11-18 03:22 snake 閱讀(556) | 評(píng)論 (4)編輯 收藏

            C++是一門(mén)廣泛用于工業(yè)軟件研發(fā)的大型語(yǔ)言。它自身的復(fù)雜性和解決現(xiàn)實(shí)問(wèn)題的能力,使其極具學(xué)術(shù)研究?jī)r(jià)值和工業(yè)價(jià)值。和C語(yǔ)言一樣,C++已經(jīng)在許多重要的領(lǐng)域大獲成功。

            然而,一個(gè)不可否認(rèn)的現(xiàn)實(shí)是,在低階程序設(shè)計(jì)領(lǐng)域,C++擠壓著C同時(shí)也在承受著C的強(qiáng)烈反彈,而在高階程序設(shè)計(jì)領(lǐng)域,Java和C#正在不斷蠶食著C++的地盤(pán)。也許C++與C合為一體永遠(yuǎn)都是一個(gè)夢(mèng)想,也許Java和C#的狂潮終將迫使C++回歸本位 — 回到它有著根本性優(yōu)勢(shì)的開(kāi)發(fā)領(lǐng)域:低級(jí)系統(tǒng)程序設(shè)計(jì)、高級(jí)大規(guī)模高性能應(yīng)用設(shè)計(jì)、嵌入式程序設(shè)計(jì)以及數(shù)值科學(xué)計(jì)算等。果真如此,我認(rèn)為這未嘗不是一件好事。

            C++吸引如此之多的智力投入,以至于這個(gè)領(lǐng)域的優(yōu)秀作品,包括重量級(jí)的軟件產(chǎn)品、程序庫(kù)以及書(shū)籍等,數(shù)不勝數(shù)。文題“C++程序設(shè)計(jì)之四書(shū)五經(jīng)”一個(gè)不太嚴(yán)格的含義是:C++程序設(shè)計(jì)之四書(shū) ⅹ 五經(jīng)。是的,在本文(及其下篇)中,我將分門(mén)別類(lèi)推薦20多本C++好書(shū),你可以根據(jù)自己的需要選讀。

            TCPL和D&E

            TCPL和D&E分別是《The C++ Programming Language》和《The Design and Evolution of C++》的簡(jiǎn)稱(chēng),均出自Bjarne Stroustrup之手。我將它們單列出來(lái),首先是因?yàn)锽jarne是C++語(yǔ)言的創(chuàng)建者,然后是因?yàn)楸取笆紫取蹦莻€(gè)原因更重要的原因:這兩本書(shū)是C++領(lǐng)域毋庸置疑的杰作。說(shuō)它們是C++語(yǔ)言圣經(jīng),并不為過(guò)。

            Bjarne Stroustrup, The C++ Programming Language (Special 3rd Edition)
            《C++程序設(shè)計(jì)語(yǔ)言(特別版)》,機(jī)械工業(yè)出版社
            《C++程序設(shè)計(jì)語(yǔ)言(特別版)(英文影印版)》,高等教育出版社

            迄今為止,TCPL是除了C++標(biāo)準(zhǔn)文獻(xiàn)之外最權(quán)威的C++參考手冊(cè)。和大多數(shù)人的看法不大一樣,我認(rèn)為Bjarne的文字語(yǔ)言并不遜色于他所創(chuàng)建的程序語(yǔ)言,至少我喜歡這種學(xué)院氣息濃厚的作品。本書(shū)對(duì)C++語(yǔ)言的描述輪廓鮮明、直截了當(dāng)。它從C++語(yǔ)言創(chuàng)建者的角度來(lái)觀察C++,這是任何別的作者和書(shū)籍做不到的 — 沒(méi)有任何人比Bjarne自己更清楚該怎么來(lái)使用C++。

            這是一本嚴(yán)肅的著作,以中、高級(jí)C++開(kāi)發(fā)人員為目標(biāo)讀者。如果你是一名有經(jīng)驗(yàn)的C++程序員,需要了解更加本質(zhì)的C++知識(shí),本書(shū)正是為你而寫(xiě)。它不是那種讓你看了會(huì)不斷竊喜的小書(shū),需要用心體會(huì),反復(fù)咀嚼。在閱讀過(guò)程中,請(qǐng)?zhí)貏e留心Bjarne先生強(qiáng)調(diào)了什么,又對(duì)什么一語(yǔ)帶過(guò)。我個(gè)人比較喜歡這本書(shū)的第四部分“使用C++做設(shè)計(jì)”,這樣的內(nèi)容在類(lèi)似的程序設(shè)計(jì)語(yǔ)言書(shū)籍中很難看到 — 我甚至認(rèn)為Bjarne應(yīng)該將這部分獨(dú)立出來(lái)單獨(dú)寫(xiě)一本書(shū)。

            Bjarne Stroustrup, The Design and Evolution of C++
            《C++語(yǔ)言的設(shè)計(jì)和演化》,機(jī)械工業(yè)出版社
            《C++語(yǔ)言的設(shè)計(jì)和演化(英文版)》,機(jī)械工業(yè)出版社

            D&E是一本關(guān)于C++語(yǔ)言設(shè)計(jì)原理、設(shè)計(jì)決策和設(shè)計(jì)哲學(xué)的專(zhuān)著。它清晰地回答了C++為什么會(huì)成為今天這個(gè)樣子而沒(méi)有變成另外一種語(yǔ)言。作為C++語(yǔ)言的創(chuàng)建者,Bjarne淋漓盡致地展示了他獨(dú)到而深刻的見(jiàn)解。除了廣受贊譽(yù)的語(yǔ)言特性外,Bjarne沒(méi)有回避那些引起爭(zhēng)議的甚至被拒絕的C++特性,他一一給出了邏輯嚴(yán)密、令人信服的解釋。內(nèi)容涵蓋C++的史前時(shí)代、帶類(lèi)的C、C++的設(shè)計(jì)規(guī)則、標(biāo)準(zhǔn)化、庫(kù)、內(nèi)存管理、多重繼承、模板等,對(duì)包括異常機(jī)制、運(yùn)行時(shí)類(lèi)型信息和名字空間在內(nèi)的重要的新特性都分別進(jìn)行了深入探討。每一名C++程序員都應(yīng)該可以從Bjarne的闡釋中加深對(duì)手中這門(mén)語(yǔ)言的認(rèn)識(shí)。

            需要再次提醒的是,這兩本書(shū)知識(shí)濃縮,信息量極大,請(qǐng)不要錯(cuò)過(guò)Bjarne每一句看似漫不經(jīng)意的話。

            入門(mén)教程

            學(xué)習(xí)任何一門(mén)語(yǔ)言都需要一個(gè)從入門(mén)到精通、從新手到高手循序漸進(jìn)的過(guò)程。不過(guò),對(duì)于一個(gè)所謂的新手而言,究竟是一個(gè)完完全全的新手,還是一個(gè)熟悉某種別的語(yǔ)言的“新手”,甚至是在某種語(yǔ)言程序設(shè)計(jì)領(lǐng)域已經(jīng)頗有建樹(shù)的高手,很難一概而論?不同的C++新手需要不同的入門(mén)書(shū)籍。

            Andrew Koenig, Barbara E. Moo, Accelerated C++: Practical Programming by Example
            《Accelerated C++中文版》,中國(guó)電力出版社

            和市面上大多數(shù)C++教程不同,本書(shū)不是從“C++中的C”開(kāi)始講解,而是始于地道的C++特性。從一開(kāi)始就使用標(biāo)準(zhǔn)庫(kù)來(lái)寫(xiě)程序,隨著講述的逐漸深入,又一一解釋這些標(biāo)準(zhǔn)庫(kù)組件所依賴的基礎(chǔ)概念。另外,和其他C++教材不同的是,這本書(shū)以實(shí)例拉動(dòng)語(yǔ)言和標(biāo)準(zhǔn)庫(kù)的講解,對(duì)后兩者的講解是為了給實(shí)例程序提供支持,而不是像絕大多數(shù)C++教材那樣,例子只是用作演示語(yǔ)言特性和標(biāo)準(zhǔn)庫(kù)用法的輔助工具。

            作者在C++領(lǐng)域的編程實(shí)踐、教育培訓(xùn)以及技術(shù)寫(xiě)作方面都是世界一流水準(zhǔn)。我喜歡這種大量使用標(biāo)準(zhǔn)庫(kù)和C++語(yǔ)言原生特性的清新的寫(xiě)作風(fēng)格。在這本教材面前,幾乎迄今為止的所有C++教材都黯然失色或顯得過(guò)時(shí)。盡管這本教材也許對(duì)于國(guó)內(nèi)的高校教育來(lái)說(shuō)有些前衛(wèi),不過(guò)我仍然極力向我的同行們推薦。順帶一提,在Bjarne和我最近的一封通信里,他這樣評(píng)價(jià)本書(shū):對(duì)于有經(jīng)驗(yàn)的程序員學(xué)習(xí)C++而言,這本書(shū)可能是世界上最好的一本。

            Stanley B.Lippman, Josee Lajoie, C++ Primer (3rd Edition)
            《C++ Primer (3RD)中文版》,中國(guó)電力出版社

            這本書(shū)的名字多少有點(diǎn)讓人誤解。盡管作者聲稱(chēng)這本書(shū)是為C++新手而寫(xiě),但無(wú)論是它的厚度還是講解的深度都暴露了似乎并非如此。也許說(shuō)它是一本“從入門(mén)到精通”的C++教程會(huì)更合適一些。我個(gè)人認(rèn)為它并不適合完全不懂C++的初學(xué)者 — 在閱讀這本書(shū)之前,你至少應(yīng)該先有那么一點(diǎn)C或C++的背景知識(shí),或者至少要具有一些其他語(yǔ)言的編程經(jīng)驗(yàn)。

            盡管這本書(shū)省略了一些高級(jí)C++特性的討論,但仍然可以稱(chēng)得上是迄今為止最全面的C++學(xué)習(xí)教程。事實(shí)上,如果一名C++初學(xué)者能夠扎扎實(shí)實(shí)地讀完本書(shū)并對(duì)照《C++ Primer Answer Book》完成全部習(xí)題的話,他的水平肯定可以進(jìn)入職業(yè)C++程序員的行列。我個(gè)人認(rèn)為,即使你已經(jīng)擁有了TCPL,這本書(shū)依然有擁有的價(jià)值,因?yàn)樵谠S多方面它比TCPL來(lái)得更詳細(xì)、更易懂。

            Stanley B. Lippman, Essential C++
            《Essential C++中文版》,華中科技大學(xué)出版社
            《Essential C++(影印版)》,中國(guó)電力出版社

            可以不太嚴(yán)格地認(rèn)為這本書(shū)是《C++ Primer》的精簡(jiǎn)版。本書(shū)一一講述了C++中最具代表性的主題,包括過(guò)程式編程、泛型編程、基于對(duì)象編程、面向?qū)ο缶幊獭⒛0寰幊桃约爱惓L幚淼取tanley將門(mén)檻調(diào)低到“具有其他語(yǔ)言程序設(shè)計(jì)經(jīng)驗(yàn)”的C++新手所能接受的最基本的層次,使他們能夠迅速開(kāi)始使用C++編程而又免于閱讀《C++ Primer》那樣的大部頭。它以實(shí)例引導(dǎo)學(xué)習(xí),力圖使讀者在最短的時(shí)間內(nèi)把握C++的精粹。

            也許換一個(gè)人來(lái)概述C++編程范型(paradigm)的方方面面需要好幾百頁(yè)才能說(shuō)清楚,但這本小書(shū)不可思議地做到了這一點(diǎn)。我個(gè)人非常喜歡這種滿是技術(shù)、簡(jiǎn)明扼要并且“有話好好說(shuō)”的書(shū)。這本書(shū)同樣具有一個(gè)明顯的風(fēng)格:所有程序例子全部采用標(biāo)準(zhǔn)庫(kù)組件,讓人耳目一新。

            以上三本書(shū)都不是為了完完全全的編程新手而寫(xiě)。完全的C++編程新手可以閱讀Francis Glassborow的新書(shū)(尚未出版):《A Beginners Introduction to Computer Programming : You Can Do It!》。這也是Bjarne的推薦。Francis Glassborow是ACCU主席,多年來(lái)他對(duì)幾乎每一本C++經(jīng)典名著評(píng)頭論足,他自己的這一本自然會(huì)引起C++社群的極大興趣。

            高效、健壯編程

            兩年前我在負(fù)責(zé)一個(gè)省級(jí)電力調(diào)度系統(tǒng)項(xiàng)目時(shí)編寫(xiě)了一個(gè)網(wǎng)關(guān)程序,它從SCADA系統(tǒng)獲取電力實(shí)時(shí)信息。通訊接口采用了不常用的數(shù)據(jù)庫(kù)直連方式(這個(gè)網(wǎng)關(guān)程序一端連接SQL Server 6.5,另一端連接Oralce 8.1.6)。由于實(shí)時(shí)測(cè)點(diǎn)近萬(wàn),每次將全部取樣更新或插入一遍顯然是低效的。我在網(wǎng)關(guān)程序里建了一個(gè)內(nèi)存庫(kù),獲取到的數(shù)據(jù)首先在其中進(jìn)行比較,然后決定是否更新物理數(shù)據(jù)庫(kù)(同時(shí)還做了別的更復(fù)雜的事情……),從而在效率和資源占用兩方面達(dá)到了預(yù)期效果。

            這個(gè)程序一直運(yùn)行得很好,但在離開(kāi)現(xiàn)場(chǎng)之后的某一天,系統(tǒng)管理員打來(lái)電話,說(shuō)大概因?yàn)榫W(wǎng)絡(luò)故障等原因,有時(shí)這個(gè)網(wǎng)關(guān)程序會(huì)崩潰掉 — 它自己崩掉也就罷了,問(wèn)題是它還會(huì)把Windows 2000 Advanced Server搞成“藍(lán)屏”!坦白地說(shuō),我還從來(lái)沒(méi)看過(guò)哪個(gè)非蓄意的程序有這個(gè)“能耐”。由于當(dāng)時(shí)正忙于另外一個(gè)大項(xiàng)目,無(wú)法去現(xiàn)場(chǎng)調(diào)試,最后只有憑經(jīng)驗(yàn)對(duì)內(nèi)存庫(kù)代碼小心翼翼地封裝以異常處理代碼(同時(shí)也做了一些別的修改……)。這樣,雖然沒(méi)有徹底解決問(wèn)題,但程序終究不再死得那么難看了。

            在這兒講這么一段花絮有什么意思呢(當(dāng)初為那個(gè)可怕的bug朝思暮想時(shí)我可不認(rèn)為這是一個(gè)“花絮”)?我想說(shuō)的是,對(duì)于任何軟件而言,離開(kāi)強(qiáng)健,效率也就無(wú)從談起。而對(duì)于C++程序員來(lái)說(shuō),也許編寫(xiě)一個(gè)高效的程序并不難,但要編寫(xiě)一個(gè)需要7 ⅹ 24小時(shí)持續(xù)運(yùn)行的服務(wù)端軟件就不是那么容易了,需要考慮許多因素,有時(shí)這些因素甚至遠(yuǎn)遠(yuǎn)超出C++語(yǔ)言和開(kāi)發(fā)工具的本身。作為一名開(kāi)發(fā)實(shí)際項(xiàng)目軟件的程序員,并非非得自己碰釘子才能積累經(jīng)驗(yàn),只要我們足夠虛心,別人的經(jīng)驗(yàn)往往都是我們很好的借鑒。鑒于此,我推薦以下幾本書(shū)供你選讀,它們可以讓你從強(qiáng)健和效率兩方面受益(當(dāng)然了,它們涵蓋的內(nèi)容遠(yuǎn)不限于異常處理J)。

            Scott Meyers, Effective C++: 50 Specific Ways to Improve Your Programs and Design (2nd Edition)
            Scott Meyers, More Effective C++: 35 New Ways to Improve Your Programs and Designs
            《Effective C++中文版》,華中科技大學(xué)出版社
            《More Effective C++中文版》,中國(guó)電力出版社
            《Effective C++(影印版)》,中國(guó)電力出版社

            如果說(shuō)《Effective C++》主要討論C++中一些相對(duì)基礎(chǔ)的概念和技巧的話,那么《More Effective C++》則著重探討了包括異常處理在內(nèi)的一系列高級(jí)技術(shù)。與前者相比,后者具有兩大主要區(qū)別:其一,它包含很多時(shí)新的標(biāo)準(zhǔn)C++的內(nèi)容;第二,它討論的主題傾向于“戰(zhàn)略化”而非“戰(zhàn)術(shù)化”,并且討論得更深入、更徹底。尤其是對(duì)虛析構(gòu)函數(shù)、智能指針、引用計(jì)數(shù)以及代理類(lèi)(proxy classe)等技術(shù)和模式論述的深入程度,讓人很難想象是出現(xiàn)于這樣的一本小書(shū)之中。

            游刃有余的技術(shù),高超的寫(xiě)作技巧,Scott無(wú)疑是世界上最優(yōu)秀的C++技術(shù)作家之一。在簡(jiǎn)潔、清晰、易讀等方面,這兩本書(shū)都卓爾不群。總之,Scott提供的這85個(gè)可以改善編程技術(shù)和設(shè)計(jì)思維的方法,都是中、高級(jí)C++程序員必備的技能。我強(qiáng)烈推薦這兩本書(shū)(實(shí)際上還有一本,稍后就會(huì)看到)。

            Herb Sutter, Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions
            Herb Sutter, More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and Solutions
            《Exceptional C++中文版》,中國(guó)電力出版社
            《More Exceptional C++中文版》,華中科技大學(xué)出版社

            你自認(rèn)為是一名C++語(yǔ)言專(zhuān)家嗎?讀一讀ISO C++標(biāo)準(zhǔn)委員會(huì)秘書(shū)長(zhǎng)的這兩本書(shū)再回答。在這兩本書(shū)中,Herb采用了“問(wèn)答”的方式指導(dǎo)你學(xué)習(xí)C++語(yǔ)言特性。對(duì)于每一個(gè)專(zhuān)題,Herb首先合理地設(shè)想出你的疑問(wèn)和困惑,接著又猜測(cè)出你十有八九是錯(cuò)誤的解答,然后給你以指點(diǎn)并提出最佳解決方案,最后還歸納出解決類(lèi)似問(wèn)題的普適性原則。

            這兩本書(shū)是典型的深究C++語(yǔ)言細(xì)節(jié)的著作,很薄,但內(nèi)容密集,遠(yuǎn)遠(yuǎn)超過(guò)Scott的那兩本書(shū),讀起來(lái)很費(fèi)腦筋 — 我個(gè)人認(rèn)為它們要比Scott的書(shū)難懂得多。若要研習(xí)這薄薄的兩本書(shū)所包含的知識(shí),至少需要花費(fèi)數(shù)月的時(shí)間!(在Scott的薦序中,他坦陳不止一次陷入GotW問(wèn)題的陷阱,你應(yīng)該知道這意味著什么)對(duì)于語(yǔ)言細(xì)節(jié)的深究有什么好處呢?盡管在大多數(shù)情況下,我們不必關(guān)心C++代碼幕后的動(dòng)作,然而當(dāng)我們不得不關(guān)心時(shí),這兩本書(shū)可以為我們提供很好的線索,因?yàn)樗鼈兘沂玖薈++語(yǔ)言中微妙而又至關(guān)重要的東西。

            Stephen C. Dewhurst, C++ Gotchas: Avoiding Common Problems in Coding and Design
            《C++程序設(shè)計(jì)陷阱》,中國(guó)青年出版社

            Stephen的理論素養(yǎng)和實(shí)踐經(jīng)驗(yàn)注定這是一本值得一讀的好書(shū)。Stephen曾經(jīng)是貝爾實(shí)驗(yàn)室中第一批C++使用者。他已經(jīng)使用C++成功解決了包括編譯器、證券交易、電子商務(wù)以及嵌入式系統(tǒng)等領(lǐng)域中的問(wèn)題。本書(shū)匯集了作者來(lái)自開(kāi)發(fā)一線的99條編程真知灼見(jiàn),洞悉它們,你可以避免幾乎所有常見(jiàn)的C++設(shè)計(jì)和編程問(wèn)題。

            我甚至認(rèn)為,對(duì)于C++編程菜鳥(niǎo)而言,閱讀這本書(shū)會(huì)比閱讀Scott和Herb的書(shū)更能輕松而立竿見(jiàn)影地獲得更大的提高。我個(gè)人很喜歡這本書(shū)的寫(xiě)作風(fēng)格 — Stephen的許多觀點(diǎn)看似極端卻無(wú)可辯駁。當(dāng)然了,這種自信(以及冷幽默)來(lái)自于作者深厚的技術(shù)素養(yǎng),而非自大的偏執(zhí)。

            除了上面推薦的書(shū)籍外,Dov Bulka和 David Mayhew合著的《Efficient C++: Performance Programming Techniques》(《提高C++性能的編程技術(shù)》,清華大學(xué)出版社)也值得一看。這本超薄小書(shū)聚焦于高性能C++應(yīng)用程序開(kāi)發(fā)。兩位作者都是IBM軟件專(zhuān)家,都工作于對(duì)性能要求極高的系統(tǒng)構(gòu)建領(lǐng)域,本書(shū)是他們的經(jīng)驗(yàn)之談。也有人不喜歡這本書(shū),因?yàn)樗瞬簧俚钠v述和C++無(wú)關(guān)的東西,我卻恰恰因?yàn)檫@一點(diǎn)而對(duì)這本書(shū)產(chǎn)生好感,正是這些東西讓我開(kāi)闊了眼界。

            模板和泛型編程

            模板和基于模板的泛型編程無(wú)疑是當(dāng)今發(fā)展最活躍的C++程序設(shè)計(jì)技術(shù)。模板的第一個(gè)革命性的應(yīng)用是STL,它將模板技術(shù)在泛型容器和算法領(lǐng)域的運(yùn)用展現(xiàn)得淋漓盡致,而B(niǎo)oost、Loki等現(xiàn)代程序庫(kù)則將模板技術(shù)的潛能不斷發(fā)揮到極致。在模板和泛型編程領(lǐng)域,我推薦以下兩本重量級(jí)著作:

            David Vandevoorde, Nicolai M. Josuttis, C++ Templates: The Complete Guide
            《C++ Templates全覽(繁體版)》,臺(tái)灣碁峰資訊股份有限公司
            《C++ Templates全覽(簡(jiǎn)體版)》,人民郵電出版社

            有一種老套的贊美一本書(shū)的手法,大致是“沒(méi)有看過(guò)這本書(shū),你就怎么怎么地”,這里面往往夸張的成分居多。不過(guò),倘若說(shuō)“沒(méi)有看過(guò)《C++ Templates: The Complete Guide》,你就不可能精通C++模板編程”,那么這個(gè)論斷對(duì)于世界上絕大多數(shù)C++程序員來(lái)說(shuō)是成立的。

            這本書(shū)填補(bǔ)了C++模板書(shū)籍領(lǐng)域由來(lái)已久的空白。此前,上有《Modern C++ Design》這樣的專(zhuān)注于模板高級(jí)編程技術(shù)和泛型模式的著作,下有《The C++ Standard Library》這樣的針對(duì)特定模板框架和組件的使用指南。然而,假如對(duì)模板機(jī)制缺乏深入的理解,你就很難“上下”自如。鑒于此,我向每一位渴望透徹理解C++模板技術(shù)的朋友推薦這本書(shū)。

            這本書(shū)在內(nèi)地、臺(tái)灣各有一個(gè)譯本,但出自不同的譯者之手。當(dāng)你看到這篇文章時(shí),兩個(gè)譯本應(yīng)該都已經(jīng)上市,對(duì)于讀者來(lái)說(shuō)當(dāng)然也就多了一種選擇。侯捷先生個(gè)人網(wǎng)站上開(kāi)放了繁體譯本大部分章節(jié),不妨先睹為快。

            Andrei Alexandrescu, Modern C++ Design: Generic Programming and Design Patterns Applied
            《C++設(shè)計(jì)新思維:泛型編程與設(shè)計(jì)模式之應(yīng)用》,華中科技大學(xué)出版社
            《C++設(shè)計(jì)新思維(影印版)》,中國(guó)電力出版社

            你自認(rèn)為是C++模板編程高手嗎?請(qǐng)看過(guò)這本書(shū)再回答J 這是一本出自天才之手令人敬畏的杰作。泛型模式,無(wú)限延伸你的視野,足以挑戰(zhàn)任何一名C++程序員的思維極限。

            這本書(shū)共分為兩大部分,第一部分討論了 Loki程序庫(kù)采用的基礎(chǔ)技術(shù)以及一些高級(jí)語(yǔ)言特性,包括基于策略的類(lèi)設(shè)計(jì)、模板局部特化、編譯期斷言、Typelist以及小型對(duì)象分配技術(shù)等。第二部分則著重介紹了Loki中的重要組件和泛型模式技術(shù),包括泛化仿函數(shù)(Generalization Functor)、單件(Singleton)、智能指針、對(duì)象工廠(Object Factory)、抽象工廠(Abstract Factory)、訪問(wèn)者(Visitor)以及多方法(Multimethods)等。每一種技術(shù)都讓人大開(kāi)眼界,嘆為觀止。

            在C++的學(xué)習(xí)方面,過(guò)猶不及往往成了不求甚解的借口。然而,面向?qū)ο蟛⒎荂++的全部,模板和泛型編程亦占半壁江山。對(duì)于“嚴(yán)肅”的C++程序員而言,及時(shí)跟進(jìn)這項(xiàng)早經(jīng)例證的成功技術(shù),不失為明智之舉。

            結(jié)語(yǔ)

            這些著作是如此大名鼎鼎,也許根本不缺我一個(gè)推薦。然而,縱然C++程序員隊(duì)伍的發(fā)展壯大速度不像其他更時(shí)髦的語(yǔ)言那樣迅速,新人進(jìn)總是多于舊人出。除了熱忱地歡迎新人,我個(gè)人認(rèn)為到了對(duì)C++書(shū)籍進(jìn)行“盤(pán)點(diǎn)”的時(shí)候了,并且希望這樣的“盤(pán)點(diǎn)”有益于感興趣的讀者。請(qǐng)保持耐心和寬厚。在下篇中,我將繼續(xù)介紹標(biāo)準(zhǔn)庫(kù)、網(wǎng)絡(luò)編程以及其他方面的C++好書(shū)。有好書(shū)相伴,這個(gè)冬天不會(huì)冷。

             

            posted @ 2005-11-18 03:21 snake 閱讀(1059) | 評(píng)論 (0)編輯 收藏

            習(xí)慣上很多教材中都把主函數(shù)寫(xiě)成如“void main()”的形式,這種寫(xiě)法上是說(shuō)明主函數(shù)是沒(méi)有任何反回值的,但更貼切的寫(xiě)法應(yīng)該為“int main()”,因?yàn)樵贑++中如果主函數(shù)中沒(méi)有“return”語(yǔ)句,那編譯器就會(huì)自動(dòng)在主函數(shù)最后加上“return 0”。

            posted @ 2005-11-18 01:00 snake 閱讀(3755) | 評(píng)論 (3)編輯 收藏

            2005年11月17日

                    剛開(kāi)始學(xué)習(xí)C++的時(shí)候,cin跟cout都是包含在頭文件iostream.h中的,在新的C++中只輸入iostream就可以了,不過(guò)在之后main()函數(shù)內(nèi)要加入名稱(chēng)空間,反之在相對(duì)較老的編譯器中頭文件名仍要帶.h,空間名稱(chēng)也要省去。
                    關(guān)于空間名稱(chēng),這是我手上這本書(shū)中講的新知識(shí),先叫新知識(shí)吧,因?yàn)槲乙郧笆遣恢赖模涓袷綖椋簎sing namespace ***,using叫做編譯指令,名稱(chēng)空間支持是C++中比較新的一個(gè)特性,是為了讓已有的程序組合起來(lái)更簡(jiǎn)單而設(shè)計(jì)的,如兩個(gè)已經(jīng)封裝好了的產(chǎn)品,且兩個(gè)都包含一個(gè)名為word( )的函數(shù),這樣在使用word( )函數(shù)時(shí),編譯器就不知道應(yīng)該去使用哪一個(gè)版本中的,因此我們可以使用名稱(chēng)空間,將abc公司的產(chǎn)品放到一個(gè)名為abc的空間中去,將def公司的產(chǎn)品放到一個(gè)名為def的公司去,這樣abc公司的就叫abc::wors( ),def公司的就叫def::word( ),應(yīng)用如下:
                              abc::wors("go dancing?");
                              def::word("a fish named desirs");

            posted @ 2005-11-17 18:14 snake 閱讀(1424) | 評(píng)論 (3)編輯 收藏

            今日看到大把的同學(xué)的簡(jiǎn)歷上都寫(xiě)著“精通c++”,”精通xxxx”,其實(shí)他們可能只是會(huì)寫(xiě)個(gè)helloworld,知道class是個(gè)關(guān)鍵字而已吧.其它的我都不是太懂,唯獨(dú)c++研究過(guò)些時(shí)日了,自己心中的精通為何也早有定義:
            1)知道所有關(guān)鍵字的含義,這個(gè)是最基本的.有很多很少用的也必須知道..比如auto,mutable,explicit,volatile...
            1.5)通讀過(guò)一遍 ISO C++標(biāo)準(zhǔn)
            2)STL的使用和基本實(shí)現(xiàn)原理.
            3)《Effective C++》,《More Effective C++》...之類(lèi)的經(jīng)驗(yàn)手冊(cè)型書(shū)籍熟讀3本以上,其中大部分條款要爛熟于胸
            4)boost庫(kù)的整體框架要了解,清楚其中某些實(shí)現(xiàn)的超級(jí)BT的庫(kù)不能被某些編譯器編譯的原因。還要清楚哪些庫(kù)將會(huì)被iso c++ 收錄...用到某些功能的時(shí)候會(huì)不由自主的想到“boost 中有這個(gè)功能?”結(jié)果花上比自己手寫(xiě)還要多的時(shí)間去使用boost.
            4)看過(guò)Moden C++ Design,loki的實(shí)現(xiàn)原理要清楚..當(dāng)然也要知道loki是干什么的...
            5)林銳的《高質(zhì)量C++編程指南》后面的習(xí)題能得到90分以上(記得是第一次做,以后補(bǔ)的不算!)。
            6)C++中的線程安全模型是怎樣的。
            7)C++中的字符串處理庫(kù),包括C++對(duì)unicode,多種語(yǔ)言編碼的支持。
            8)預(yù)編譯命令都知道是用來(lái)干什么的和常見(jiàn)的使用習(xí)慣...
            9)平時(shí)最常用的一個(gè)編譯器的所有編譯選項(xiàng)熟記于心,以及他和ISO C++定義的編譯器的差別
            10)這條湊數(shù)...不管怎么樣,也要會(huì)用gcc...這樣保證了在每個(gè)平臺(tái)下面 都可以編譯個(gè)helloworld
            按上面的標(biāo)準(zhǔn)查看下自己...還是要繼續(xù)努力啊...

            posted @ 2005-11-17 17:40 snake 閱讀(1826) | 評(píng)論 (5)編輯 收藏

            久久精品无码一区二区三区免费| 久久久久这里只有精品| 成人久久精品一区二区三区 | 久久久久免费精品国产| 亚洲午夜无码久久久久| 99久久成人18免费网站| 一本久久a久久精品综合香蕉| 久久精品亚洲中文字幕无码麻豆| 精品无码久久久久久久久久| 久久久久精品国产亚洲AV无码| 久久精品国产69国产精品亚洲| 欧美精品九九99久久在观看| 国产精品视频久久| 伊人久久综合成人网| 国产精品热久久无码av| 久久国产精品77777| 日本WV一本一道久久香蕉| 久久精品男人影院| 久久国产精品99国产精| 久久精品国产乱子伦| 免费一级做a爰片久久毛片潮| 91精品国产综合久久精品| 亚洲中文字幕无码久久综合网| 日韩精品无码久久一区二区三| 大美女久久久久久j久久| 精品久久久久久无码专区| 国产欧美久久久精品影院| 欧洲国产伦久久久久久久| 国产精品熟女福利久久AV| 国产精品久久永久免费| 72种姿势欧美久久久久大黄蕉| 无码久久精品国产亚洲Av影片| 精品久久人人爽天天玩人人妻| 亚洲国产成人精品久久久国产成人一区二区三区综 | 久久综合给久久狠狠97色| 丁香色欲久久久久久综合网| 亚洲性久久久影院| 性高湖久久久久久久久AAAAA| 日本久久中文字幕| 一本久久综合亚洲鲁鲁五月天| 久久青青草原精品国产软件|