C++核心准则R.33: 表达函数会重置widget时,使用unique_ptr...

面向对象思考

共 1314字,需浏览 3分钟

 ·

2020-04-10 23:26

425e98af5675968faf3c6188383bbbdf.webp

R.33: Take a unique_ptr& parameter to express that a function reseats the widget

R.33:  表达函数会重置widget时,使用unique_ptr&作参数。


Reason(原因)

Using unique_ptr in this way both documents and enforces the function call's reseating semantics.

以这种方式使用unique_ptr可以从文档和实现两个方面强制函数调用的重置语义。


Note(注意)

"reseat" means "making a pointer or a smart pointer refer to a different object."

“重置”的意思是使指针或者智能指针参照另外一个对象。


Example(示例)

void reseat(unique_ptr&); // "will" or "might" reseat pointer

Example, bad(反面示例)
void thinko(const unique_ptr&); // usually not what you want

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




觉得本文有帮助?请分享给更多人。

关注微信公众号【面向对象思考】轻松学习每一天!

面向对象开发,面向对象思考!



浏览 25
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报