Effictive C++條款整理計劃(21-30)
阿新 • • 發佈:2018-12-23
21. 必須返回物件時,別妄想返回其reference
該條表達的意思是:在需要返回一個新物件的時候,我們不應返回一個棧上(記憶體被釋放,reference無效)、堆上(極易資源洩露)、或者static(多執行緒不安全)上面的reference,而是應該返回這個新物件。
22. 將成員變數宣告為private
該條款表達的意思是:儘可能的將成員變數定義為私有的,而通過Get/Set等介面提供訪問的控制權限等。
23. 寧以non-member、non-friend替換member函式
該條款表達的意思是:可以將一些便利函式(比如一個類裡有ClearA(),ClearB(),ClearC(),而使用者常用的直接清除這三個函式Clear(),Clear裡面分別呼叫了ClearA(),ClearB(),ClearC())和對應的類,放置到同一個名稱空間中。
24. 若所有引數皆需型別轉換,請以此採用non-member函式
該條款表達的意思是:如果要為某個函式的所有引數進行型別轉換,那麼這個函式必須是個non-member函式。
25. 考慮寫出一個不丟擲異常的swap函式
該條款表達的意思是:如果使用標準swap函式(簡單的值copy)效率低時,應該自定義一個swap函式。
26. 儘可能延後變數定義式的出現時間
該條款表達的意思是:在變數即將使用的時候在定義,而不是在一開始就定義。
27. 儘量少做轉型動作
儘量不適用dynamic_casts進行轉型。如果轉型是必須的,也應該將其隱藏在某個函式的背後。
28. 避免返回handles指向物件內部成分
該條款表達的意思是:儘量避免返回一個物件的內部成分,如果需要返回該物件的成分,也應該在返回值前加上const,從而保證該成分只能被檢視而無法被塗改。
29. 為“異常安全”而努力是值得的
30. 透徹瞭解inlining的裡裡外外
該條款表達的意思是:在class宣告中實現的函式預設為inline函式。inline函式的修改會導致所有應用到該函式的檔案進行重新編譯。並且inline在debuf時,會產生很多問題。