• <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>

            洛譯小筑

            別來無恙,我的老友…
            隨筆 - 45, 文章 - 0, 評論 - 172, 引用 - 0
            數據加載中……

            [ECPP讀書筆記 條目1] 把C++看作多種語言的聯合體


            起初,C++僅僅是增補了面向對象特性的C語言。甚至C++原始的名稱都叫做“C with Classes”,即“使用類的C語言”,二者的繼承關系可見一斑。

            隨著C++逐漸成熟,它開始采納一些與“使用類的C語言”不同的理念、特征以及編程策略,使其顯得更加大膽前衛,更富有冒險精神。在組織各個函數時異常處理機制需要不同的處理方式(參見條目29),模板為設計模式帶來了全新的思維方式(參見條目41),與此同時,STL使C++擁有了前所未有的可擴展性。

            今天的C++是一門多范型編程語言,它包含面向過程、面向對象、函數式編程、泛型、元編程等等特征。C++的強大和靈活幾乎是無可比擬的,但這也會造成一些困惑。所有“恰當用法”的準則似乎都存在例外。那么我們該如何正確理解這樣一門語言呢?

            最簡單的辦法就是把C++看作一個由若干門語言組成的聯合體,而不是一門單一的語言。在某個特定的子語言中,規則就會趨于簡單、直接,而且容易記憶。當你切換到另一門子語言時,規則也就相應地改變了。為了理解C++,你必須能夠辨別C++所有主要的子語言。幸運的是,主要的子語言只有四門:

            C。盡管變革是深刻的,C++仍然基于C語言。程序塊、語句、預處理器、內建數據類型、數組、指針,等等,所有都來自于C。在許多情況下,C++為某些問題提供的解決方案要比C更優秀(比如條目2(預處理器的替代方法)和條目13(使用對象管理資源)),但是當你發現你正在使用C++中的C這一部分編寫程序時,高效編程原則就會反映出C語言更多的局限所在:沒有模板、沒有異常處理、沒有重載,等等。

            面向對象的C++。這一部分的C++就是使用類的C語言的一切:類(包括構造函數和析構函數)、封裝、繼承、多態、虛函數(動態綁定),等等。這是C++中面向對象的經典準則得到最為直接的應用的那一部分。

            包含模板的C++。這是C++中泛型編程的一部分,這也是大多數程序員涉足最淺的部分。模板的概念遍及C++的方方面面,因此,某些優秀的編程守則中有一些特定的、僅針對模板的段落也不足為奇。(比如,條目46中介紹的在調用模板函數時如何簡化類型轉換)。事實上,模板如此之強大,它足以帶來一個全新的編程范型:模板元編程(template meta-programming,簡稱TMP)。條目48是對TMP的一個簡介,然而除非你是一個狂熱的“模板迷”,你大可不必投入過多精力。主流C++編程很少涉及到TMP規則。

            STL。顧名思義,STL是一個模板庫,但是它是一個非常特別的模板庫。它將容器、迭代器、算法、函數對象之間的約定十分優雅的相互協調在一起,當然模板和庫也可以基于其它的理念來構建。STL有自己獨特的解決問題的方法,當你使用STL編程時,你必須要遵循它的約定。

            時刻地對這四門子語言保持頭腦清醒,當你從一門子語言切換到另一門時,高效的程序會要求你必須更改當前策略,遇到這種情況時請不要大驚小怪。比如說,對內建(比如類似C語言的)類型而言,傳值要比傳引用更高效,但是當你從C++中的C遷移到面向對象的C++后,構造函數和析構函數的存在就意味著傳遞const引用會更好。在使用“包含模板的C++”時這一點尤其正確,因為你根本就不知道當前正在處理的對象是什么類型。然而當開始使用STL時,迭代器和函數對象都是基于C語言中的指針機制創建的,因此對于迭代器和函數對象而言,C語言的傳值規則又再次奏效了。(關于各種傳參方法方案選擇的細節,參見條目20。)

            綜上,C++并不是一門僅僅擁有一套規則的單一化編程語言,它是四門子語言的聯合體,每門子語言都有自己的約定。對這四門子語言時刻保持清醒,你會發現C++并沒有那么難于理解。

            時刻牢記

            C++ 的高效編程守則不是一成不變的,它根據你正在使用的那一部分C++而改變。

            posted on 2007-04-02 21:12 ★ROY★ 閱讀(2299) 評論(6)  編輯 收藏 引用 所屬分類: Effective C++

            評論

            # re: 【翻】Effective C++ (Item 1)  回復  更多評論   

            恩,一定要堅持,我就是缺乏堅持,希望我們以后相互鼓勵,共同進步!
            2007-04-02 21:14 | 夢在天涯

            # re: 【翻】Effective C++ (Item 1)  回復  更多評論   

            @夢在天涯
            哇這么快啊
            希望你能多多幫助我,我是個半瓶子醋。哈哈
            2007-04-02 21:26 | ★ROY★

            # re: 【翻】Effective C++ (Item 1)  回復  更多評論   

            我也是很一知半解的,慢慢學吧,呵呵
            2007-04-02 22:04 | Qiu Xianli

            # re: 【翻】Effective C++ (Item 1)[未登錄]  回復  更多評論   

            報告樓主已經有人翻譯了前 52 條款,在這里
            http://blog.csdn.net/fatalerror99/category/180519.aspx
            希望樓主能不能把剩下的翻一下,多謝了
            2007-04-02 22:40 | C++

            # re: 【翻】Effective C++ (Item 1)  回復  更多評論   

            好像似乎可以買到書吧,候捷老師翻譯的~~~~~`
            2007-04-03 08:39 | volnet

            # re: 【翻】Effective C++ (Item 1)  回復  更多評論   

            呵呵。書店那么多的書......
            2007-04-03 15:08 | skipper
            亚洲精品午夜国产va久久| 久久久久久无码国产精品中文字幕 | 成人国内精品久久久久影院| 亚洲中文字幕伊人久久无码| 久久精品天天中文字幕人妻| 97超级碰碰碰碰久久久久| 蜜桃麻豆WWW久久囤产精品| 亚洲精品高清国产一久久| 久久精品亚洲中文字幕无码麻豆 | 少妇无套内谢久久久久| 欧美日韩精品久久久免费观看| 成人免费网站久久久| 久久精品中文闷骚内射| 亚洲欧美日韩久久精品第一区| 青青草原综合久久| 国产香蕉97碰碰久久人人| 色综合久久88色综合天天| 国产巨作麻豆欧美亚洲综合久久 | 久久精品国产第一区二区| 国产精品99久久久久久猫咪| 精品久久久无码中文字幕| 国内精品伊人久久久久网站| 久久久青草青青国产亚洲免观| 色噜噜狠狠先锋影音久久| 久久午夜福利电影| 伊人久久大香线蕉亚洲| 99久久国产亚洲高清观看2024| 久久婷婷五月综合97色一本一本 | 亚洲va久久久噜噜噜久久天堂| 亚洲国产成人久久综合区| 久久综合狠狠综合久久综合88| 综合久久精品色| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 无码任你躁久久久久久| 99久久成人国产精品免费| 久久99精品国产99久久6| 久久最近最新中文字幕大全| 777午夜精品久久av蜜臀| 7国产欧美日韩综合天堂中文久久久久 | 亚洲精品tv久久久久久久久 | 久久综合精品国产二区无码|