google 用了很多自己實現的技巧 / 工具使 c++ **更加健壯, 我們使用 c++ 的方式可能和你在其它地方見到的有所不同.
動態分配出的物件最好有單一且固定的所有主, 並通過智慧型指標傳遞所有權.
定義
所有權是一種登記/管理動態記憶體和其它資源的技術. 動態分配物件的所有主是乙個物件或函式, 後者負責確保當前者無用時就自動銷毀前者. 所有權有時可以共享, 此時就由最後乙個所有主來負責銷毀它. 甚至也可以不用共享, 在**中直接把所有權傳遞給其它物件.
智慧型指標是乙個通過過載 * 和 -> 運算子以表現得如指標一樣的類. 智慧型指標型別被用來自動化所有權的登記工作, 來確保執行銷毀義務到位.std::unique_ptr
是 c++11 新推出的一種智慧型指標型別, 用來表示動態分配出的物件的獨一無二的所有權; 當std::unique_ptr
離開作用域時, 物件就會被銷毀.std::unique_ptr
不能被複製, 但可以把它移動(move)給新所有主.std::shared_ptr
同樣表示動態分配物件的所有權, 但可以被共享, 也可以被複製; 物件的所有權由所有複製者共同擁有, 最後乙個複製者被銷毀時, 物件也會隨著被銷毀.
優點
缺點
結論
如果必須使用動態分配, 那麼更傾向於將所有權保持在分配者手中. 如果其他地方要使用這個物件, 最好傳遞它的拷貝, 或者傳遞乙個不用改變所有權的指標或引用. 傾向於使用 std::unique_ptr 來明確所有權傳遞, 例如:
std:
:unique_ptr
foofactory();
void fooconsumer(std:
:unique_ptr ptr);
如果沒有很好的理由, 則不要使用共享所有權. 這裡的理由可以是為了避免開銷昂貴的拷貝操作, 但是只有當效能提公升非常明顯, 並且操作的物件是不可變的(比如說 std::shared_ptr )時候, 才能這麼做. 如果確實要使用共享所有權, 建議於使用 std::shared_ptr .
不要使用 std::auto_ptr, 使用 std::unique_ptr 代替它.
使用cpplint.py
檢查風格錯誤.
說明
cpplint.py 是乙個用來分析原始檔, 能檢查出多種風格錯誤的工具. 它不並完美, 甚至還會漏報和誤報, 但它仍然是乙個非常有用的工具. 在行尾加 // nolint, 或在上一行加 // nolintnextline, 可以忽略報錯.
GoogleCpp風格指南 4 Google奇技
4 來自google的奇技 google specific magic google用了很多自己的實現技巧 工具使 c 更加健壯,我們使用c 的方式可能和你在其他地方見到的有所不同 removed 4.1 智慧型指標 tip如果確實需要使用智慧型指標的話,scoped ptr完全可以勝任 你應該只在...
C語言 注釋轉換(C風格 C 風格)
其中有一些檔案操作函式,不懂的可以看這篇部落格 首先,我們要知道乙個檔案中至少有五種狀態,我們用狀態圖表示 解讀 我們從 不是注釋 的狀態開始,請看下圖 有以下幾種情況需要注意 轉變成 轉變成 判斷是否為換行,如果換行需要輸入 轉變成 如果準備出注釋的時候,遇到 先保留看下乙個字元是不是 如果是 在...
來自 Google 的 R 語言編碼風格指南
r 語言是一門主要用於統計計算和繪圖的高階程式語言。這份 r 語言編碼風格指南旨在讓我們的 r 更容易閱讀 分享和檢查。以下規則系與 google 的 r 使用者群體協同設計而成。概要 r編碼風格約定 一 表示和命名 二 語法 三 組織 概要 r語言使用規則 四 語言 五 例外 六 結語 七 參考文...