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

            逛奔的蝸牛

            我不聰明,但我會很努力

               ::  :: 新隨筆 ::  ::  :: 管理 ::
            1.   盡量用const和inline,而不用#define,即盡量用編譯器,而不用預處理器。
            2.   盡量用iostream,而不用stdio.h。
            3.   盡量用new和delete,而不用malloc和free,因為new和delete會執行構造函數和析構函數,而malloc和free不會。
            4.   盡量在函數中使用C++風格的注釋 // 函數頭用/* */
            5.   new和delete與malloc和free要成對出現。
            6.   析構函數里對指針成員delete,delete NULL指針并不影響什么。
            7.   預先準備好內在不夠的情況,try{ new..} catch(bad_alloc baex) {}
            8.   寫operator new和operator delete時要遵循常規。
            9.   如果寫了operator new,就要寫operator delete。
            10. 為需要動態分配內存的類提供一個復制構造函數和賦值操作運算符。
            11. 盡量使用初始化,而不在構造函數里賦值。CC::CC(int v_value) : value(v_value) {}
            12. 初始化列表中成員的列出順序與成員的在類中的聲明順序相同。
            13. 確定基類有虛析構函數,否則釋放子類時只能執行基類的析構函數,而不會執行子類的虛構函數。
            14. 讓operator= 返回*this的引用, (a = b) = c;只是為了這個能正確執行,不過這可是一個很阿格里拉的編程風格。
            15. 在operator= 中對所有數據成員賦值。
            16. 在operator= 中檢查對自己賦值的情況。如不處理這種情況,在operator= 中先釋放指針對象數據,
                 然后再把目標的數據復制過來,因為是自己給自己復制,但數據已經釋放,所以發生錯誤。
            17. 爭取使類的接口完整并最小。
            18. 分清成員函數,非成員函數和友元函數。
            19. 避免public接口出現數據成員。set, get.
            20. 盡可能使用const。
            21. 盡量傳引用,而不是傳值。const ClassName&。
            22. 必須返回一個對象時,不要試圖返回一個引用。如函數中的臨時變量的引用。
            23. 在函數重載和設定參數缺省值的函數之間慎重選擇。
            24. 避免指針和數字類型重載:void func(int x)與void func(string* str)傳入0時:func(static_cast<string*>(null)。
            25. 如果不想使用隱式生成的函數,就顯示的禁用它:private Array& operator=(const Array& ref);
            26. 使用名字空間的好處:盡可能的避免名字沖突引發的問題。假如一個程序中有幾百個名字沖突,名字空間能很好的解決這個問題。
            27. 避免返回內部數據的句柄:指針。
            28. 避免返回private和protected成員的非const引用和指針。
            29. 千萬不要返回局部對象的引用,也不要返回函數內部定義的new初始化的指針,容易忘掉delete。
            30. 盡可能推遲變量的定義,這個在C中做不到,定義無用的變量必然伴隨無用的開銷。
            31. 將文件間的編譯依賴性降至最低:分離的關鍵在于:對類的聲明的依賴與對類的定義的依賴:
                 盡量讓頭文件不要依賴于另的文件。如使用ImageLoad.h中的Image類,在類的聲明中不要#include"ImageLoad.h",
                 而只是聲明類class Image; 在類的定義中才使用#include"ImageLoad.h"。
                 盡量不要在頭文件中包含其他的頭文件。
            32. 使用函數體現“是一個”的含義,而不是“有一個”。
            33. 明智的使用多繼承,這東西不好玩。
            34. 編譯器能為我們自動生成的函數:
                 構造函數,析構函數,復制構造函數,賦值運算符重載,一對取地址運算符。
            35. 寧可編譯鏈接時出錯,也不愿運行時出錯。極少情況下會使用C++拋出異常:內存耗盡:
                 C++中沒有上溢,下溢,除零檢查,數組越界檢查。
            36. 重視編譯器警告。
            37. 熟悉標準庫,在名字空間std中的。C++的偽標準庫,如iostream.h, limits.h。
            38. 常變量,類成員,父類構造函數要放在初始化列表初始化。
            39. 指針定義時初始化為NULL。
            40. 終極解決大法:良好的編譯習慣可很避免上面很多情況的發生,如有一天C++的語法變得像Java一樣限制那么多,
                 就不會出現這么多問題,不過也正因為如此,才出現了N多C++奇淫技巧,就如茴香豆的茴有四種寫法,
                 這里可不止四種。
            posted on 2010-12-17 18:07 逛奔的蝸牛 閱讀(688) 評論(0)  編輯 收藏 引用 所屬分類: C/C++
            99国内精品久久久久久久| 少妇高潮惨叫久久久久久| 久久99精品久久久久久动态图| 色婷婷久久久SWAG精品| 亚洲中文久久精品无码| 久久99精品久久只有精品| 国产成人AV综合久久| 亚洲av成人无码久久精品| 久久久精品人妻一区二区三区蜜桃| 91精品国产91久久综合| 日日狠狠久久偷偷色综合免费| 亚洲国产精品无码久久久蜜芽| 久久综合九色综合97_久久久 | 亚洲国产高清精品线久久 | 中文无码久久精品| 亚洲国产天堂久久综合网站| 久久精品中文字幕大胸| 久久久久亚洲精品中文字幕| 无码人妻精品一区二区三区久久久 | 精品乱码久久久久久久| 午夜精品久久久久久影视777| 99久久久精品免费观看国产| 中文字幕无码av激情不卡久久| 99久久中文字幕| 97久久婷婷五月综合色d啪蜜芽| 久久久精品免费国产四虎| 东方aⅴ免费观看久久av| 久久久久亚洲精品天堂久久久久久| 久久久久久久人妻无码中文字幕爆| 久久久午夜精品福利内容| 国产ww久久久久久久久久| 欧美久久精品一级c片片| 97久久精品午夜一区二区| 国产激情久久久久久熟女老人| 久久青青草原精品国产软件| 一级做a爰片久久毛片人呢| 精品国产91久久久久久久| 97久久精品人妻人人搡人人玩| 亚洲精品无码久久一线| 亚洲第一极品精品无码久久 | 久久这里只有精品首页|