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

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

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<widget>&); // "will" or "might" reseat pointer

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


觉得本文有帮助?欢迎点赞并享给更多的人。

更新文章,请关注微信公众号【面向对象思考】

C++核心准则R.33: 表达函数会重置widget时,使用unique_ptr(widget)​作参数相关推荐

  1. R语言glm函数拟合回归模型时其它常用的函数(summary、coefficients、confint、fitted、residuals、anova、plot、predict、deviance等)

    R语言glm函数拟合回归模型时其它常用的函数(summary.coefficients.confint.fitted.residuals.anova.plot.predict.deviance.df. ...

  2. C++核心准则R.32: 通过​unique_ptr(widget)类型参数表示函数试图获取widget的所有权

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

  3. C++核心准则R.2: 只在接口中表示单独对象使用原始指针​

    R.2: In interfaces, use raw pointers to denote individual objects (only) R.2: 只在接口中表示单独对象使用原始指针 Reas ...

  4. 判断exception类型_C++核心准则T.44:使用函数模板推断类模板参数类型(如果可能)...

    T.44: Use function templates to deduce class template argument types (where feasible) T.44:使用函数模板推断类 ...

  5. 使用说明 vector_C++核心准则编译边学-F.20 输出结果时应该使用返回值

    F.20: For "out" output values, prefer return values to output parameters(输出结果时更应该使用返回值而不是输 ...

  6. R语言glm函数构建二分类logistic回归模型、epiDisplay包logistic.display函数获取模型汇总统计信息(自变量初始和调整后的优势比及置信区间,回归系数的Wald检验的p值

    R语言glm函数构建二分类logistic回归模型(family参数为binomial).使用epiDisplay包logistic.display函数获取模型汇总统计信息(自变量初始和调整后的优势比 ...

  7. c 函数多次声明_C++核心准则C.132:不要没有理由就将函数声明为虚函数

    岫玉 C.132: Don't make a function virtual without reason C.132:不要没有理由就将函数声明为虚函数 Reason(原因) Redundant v ...

  8. 《linux命令行与shell脚本编程大全》第三版 - 核心笔记(3/4):函数与图形化脚本

    <linux命令行与shell脚本编程大全> 全书4部分: ☆ [1]linux命令行(1-10章) ☆ [2]shell脚本编程基础(11-16章) ☆ [3]高级shell脚本编程(1 ...

  9. R语言与函数估计学习笔记(函数模型的参数估计)

    R语言与函数估计学习笔记 毫无疑问,函数估计是一个比参数估计要复杂得多的问题,当然也是一个有趣的多的问题.这个问题在模型未知的实验设计的建模中十分的常见,也是我正在学习的内容的一部分. 关于函数估计我 ...

最新文章

  1. python语法大全-python基本语法
  2. 通过安装scl软件集,使用高版本gcc的方法
  3. LeetCode Algorithm 169. 多数元素
  4. C语言实现ICMP协议Ping命令
  5. WebHook入门教程:快速实现自动化运维,如自动热部署、自动重启服务、自动备份数据库等等
  6. andrew ng 机器学习笔记_所有笔记目录 | 数据分析 | 机器学习 | 深度学习等
  7. 网络层QoS分类和标记字段详解
  8. 用命令行查看mysql,利用命令行查看Mysql数据库
  9. 如何开启计算机cpu虚拟化,win10如何开启虚拟化支持_win10开启cpu虚拟化的方法
  10. 基于线性回归房价预测散点图和折线图
  11. SpringBoot静态资源处理(九)
  12. Java基础题练习(switch多选择结构的使用、white循环中++的使用、white循环中输入分数游戏)
  13. vue 移动端校验(是否移动设备,安卓/IOS,是否微信浏览器)
  14. android高德地图多个mark点击,Android ---------高德卫星地图绘制多个点和点的点击事件自定义弹窗...
  15. 8086/8088 寻址方式
  16. linux 软盘启动程序,Linux 引导过程及原理-从软盘启动GRUB
  17. 80道前端面试经典选择题
  18. 基于51单片机的8位数码管显示的可调时电子时钟
  19. Python基础教程之数据类型
  20. 22.0:Codejock Suite Pro for ActiveX COM:Crack

热门文章

  1. q群机器人php,QQ机器人接口(加群可见)
  2. 计算机基础是公共必修课,计算机公共必修课《大学计算机基础》课程教学大纲.doc...
  3. VBA 单一单元格的多行内容拆分为多行
  4. Win10蓝屏原因查找以及解决
  5. 给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱,问最多可以喝到多少瓶可乐
  6. 大咖们都在用的三大引流拓客方案,学会一个就够用
  7. 硬件设计——外围电路(复位电路)
  8. Heartbleed心脏出血漏洞原理分析
  9. Mac桌面壁纸文件如何提取里面的壁纸图片?heic动态桌面壁纸怎么导出jpg的图片形式?
  10. 八款好用的浏览器兼容性测试工具推荐