R.32: Take a unique_ptr<widget> parameter to express that a function assumes ownership of a widget/<widget>
R.32: 通过unique_ptr<widget>类型参数表示函数试图获取widget的所有权/<widget>
Reason(原因)
Using unique_ptr in this way both documents and enforces the function call's ownership transfer.
以这种方式使用unique_ptr可以从文档和实现两个方面强制进行所有权的移交。
Example(示例)
<code>void sink(unique_ptr<widget>); // takes ownership of the widget
void uses(widget*); // just uses the widget/<widget>/<code>
Example, bad(反面示例)
<code>void thinko(const unique_ptr<widget>&); // usually not what you want/<widget>/<code>
Enforcement(实施建议)
- (Simple) Warn if a function takes a Unique_pointer
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
参数,却没有对它赋值,或者在至少一条代码路径上调用了reset,报警。建议使用T*或者T&代替。 - (Simple) ((Foundation)) Warn if a function takes a Unique_pointer
parameter by reference to const. Suggest taking a const T* or const T& instead. - (简单)((基本)) 如果一个函数以常量引用方式使用Unique_pointer
参数,建议使用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
觉得本文有帮助?请分享给更多人。
关注微信公众号【面向对象思考】轻松学习每一天!
面向对象开发,面向对象思考!
閱讀更多 面向對象思考 的文章