C++核心準則R.32: 通過 unique_ptr(widget)類型參數表示函數試圖獲取widget的所有權

R.32: Take a unique_ptr<widget> parameter to express that a function assumes ownership of a widget

R.32: 通過unique_ptr<widget>類型參數表示函數試圖獲取widget的所有權

 

Reason(原因)

Using unique_ptr in this way both documents and enforces the function call's ownership transfer.

以這種方式使用unique_ptr可以從文檔和實現兩個方面強制進行所有權的移交。

 

Example(示例)

void sink(unique_ptr<widget>); // takes ownership of the widget

void uses(widget*);            // just uses the widget

Example, bad(反面示例)

void thinko(const unique_ptr<widget>&); // usually not what you want

Enforcement(實施建議)

  • (Simple) Warn if a function takes a Unique_pointer<T> parameter by lvalue reference and does not either assign to it or call reset() on it on at least one code path. Suggest taking a T* or T& instead.

  • (簡單)如果一個函數通過左值引用方式使用了Unique_pointer<T>參數,卻沒有對它賦值,或者在至少一條代碼路徑上調用了reset,報警。建議使用T*或者T&代替。

  • (Simple) ((Foundation)) Warn if a function takes a Unique_pointer<T> parameter by reference to const. Suggest taking a const T* or const T& instead.

  • (簡單)((基本)) 如果一個函數以常量引用方式使用Unique_pointer<T>參數,建議使用const T*或者const T&代替。

 

原文鏈接

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r32-take-a-unique_ptrwidget-parameter-to-express-that-a-function-assumes-ownership-of-a-widget

 


 

覺得本文有幫助?歡迎點贊並分享給更多的人。

閱讀更多更新文章,請關注微信公衆號【面向對象思考】

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章