原创 Item 33:避免隱藏繼承來的名稱

Item 33: Avoid hiding inherited names. 其實本文的話題和繼承完全沒有關係,隱藏名稱是作用域的問題。 在C++中每一對{ }都會開啓一個新的作用域,並嵌套在當前作用域中。 一個示例 int x

原创 Item 17:在單獨的語句中將new的對象放入智能指針

Item 17: Store newed objects in smart pointers in standalone statements. 在單獨的語句中將new的對象放入智能指針,這是爲了由於其他表達式拋出異常而導致的資

原创 Item 26:儘量推遲變量定義

Item 26: Postpone variable definitions as long as possible. 這一規則在任何編程語言中都適用,一方面可以避免無用的構造使得程序更高效,另一方面作用域的縮小會使程序更加清晰

原创 Item 24:用非成員函數來支持所有元的類型轉換

Item 24: Declare non-member functions when type conversions should apply to all parameters. 雖然Item 15:資源管理類需要提供對原始

原创 Item 34:區分接口繼承和實現繼承

Item 34: Dirrerentiate between inheritance of interface and inheritance of implementation. 不同於Objective C或者Java,C+

原创 Item 30:理解inline函數的裏裏外外

Item 30: Understanding the ins and outs of lining. inline(內聯)函數的好處太多了:它沒有宏的那些缺點,見Item 2:避免使用define;而且不需要付出函數調用的代價。

原创 Item 31:最小化文件之間的編譯依賴

Item 31: Minimize compilation dependencies between files. 曾聽老師講過,每天上班的第一件事就是下載最新代碼開始編譯,然後可以有半個小時去喝杯咖啡。。。 這是C++特殊的一

原创 Item 19:把類的設計視作類型設計

Item 19: Teat class design as type design. 在面嚮對象語言中,開發者的大部分時間都用在了增強你的類型系統。這意味着你不僅是類的設計者,更是類型設計者。 重載函數和運算符、控制內存分配和釋

原创 Item 18:讓接口容易被正確使用,不易被誤用

Item 18: Make interfaces easy to use correctly and hard to use incorrectly. “讓接口容易被正確使用,不易被誤用”,這也是面向對象設計中的重要概念,好的接

原创 Item 25:考慮實現一個不拋異常的swap

Item 25: Consider support for a non-throwing swap. Swap函數最初由STL引入,已經成爲異常安全編程(見Item 29)的關鍵函數, 同時也是解決自賦值問題(參見Item 11

原创 Item 35:考慮虛函數的其他替代設計

Item 35: Consider alternatives to virtual functions. 比如你在開發一個遊戲,每個角色都有一個healthValue()方法。很顯然你應該把它聲明爲虛函數,可以提供默認的實現,讓

原创 Item 21:需要返回對象時,不要返回引用

Item 21: Don’t try to return a reference when you must return an object Item 20中提到,多數情況下傳引用比傳值更好。追求這一點是好的,但千萬別返回空的

原创 Item 23:非成員非友元函數好於成員函數

Item 23: Prefer non-member non-friend functions to member functions 在類的是實現中,常常會面臨成員函數和非成員函數的選擇。比如一個瀏覽器類: class Web

原创 Item 36:不要重寫繼承來的非虛函數

Item 36: Never redefine an inherited non-virtual function. 我們還是在討論public繼承,比如Derived繼承自Base。如果Base有一個非虛函數func,那麼客戶

原创 Item 32:確保public繼承是"is a"的關係

Item 32: Make sure public inheritance models “is-a”. C++面向對象程序設計中,最重要的規則便是:public繼承應當是”is-a”的關係。當Derived public繼承自