专栏首页C++核心准则原文翻译C++核心准则C.151:使用make_shared构建shared_ptr管理的对象

C++核心准则C.151:使用make_shared构建shared_ptr管理的对象

C.151: Use make_shared() to construct objects owned by shared_ptrs

C.151:使用make_shared构建shared_ptr管理的对象

Reason(原因)

make_shared gives a more concise statement of the construction. It also gives an opportunity to eliminate a separate allocation for the reference counts, by placing the shared_ptr's use counts next to its object.

make_shared为构造动作提供了更加简明的表达。由于它将shared_ptr的计数置于对象之后,使用它还可以提供减少另外一次的增加计数的机会。

Example(示例)

void test() {
    // OK: but repetitive; and separate allocations for the Bar and shared_ptr's use count
    shared_ptr<Bar> p {new Bar{7}};

    auto q = make_shared<Bar>(7);   // Better: no repetition of Bar; one object
}
Enforcement(实施建议)
  • Flag the repetitive usage of template specialization list<Bar>
  • 提示重复使用模板特化参数列表的情况
  • Flag variables declared to be shared_ptr<Bar>
  • 提示使用shared_ptr直接定义变量的情况。

原文链接:

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c151-use-make_shared-to-construct-objects-owned-by-shared_ptrs


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

关注【面向对象思考】轻松学习每一天!

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

本文分享自微信公众号 - 面向对象思考(OOThinkingDalian),作者:面向对象思考

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C++核心准则R.22: 使用make_shared()构建共享shared_ptr

    If you first make an object and then give it to a shared_ptr constructor, you (m...

    面向对象思考
  • C++核心准则C.50:如果在构造过程中需要“虚行为”,使用工厂函数

    C.50: Use a factory function if you need "virtual behavior" during initializatio...

    面向对象思考
  • C++核心准则编译边学-F.27 使用shared_ptr<T>共享所有权

    Using std::shared_ptr is the standard way to represent shared ownership. That is...

    面向对象思考
  • C++核心准则C.50:如果在构造过程中需要“虚行为”,使用工厂函数

    C.50: Use a factory function if you need "virtual behavior" during initializatio...

    面向对象思考
  • 怎么采集dedecms自定义内容模型

      有时我们需要用到dedecms提供的自定义内容模型功能去添加自定义内容模型来满足需求,那么dedecms自定义内同模型怎么添加采集规则呢?打开“/dede/...

    ytkah
  • 一个基于TCP/IP的小项目,实现广播消息的功能。(超详细版)

    该功能基于上个项目的改进,主要是通过对服务器端代码的修改,以及对客户端作少许修改,实现开启多客户端时,一个客户端发送消息,达到对所有客户端广播的效果。可参考网吧...

    WeiMLing
  • Jenkins+基础系列16:番外篇--Manage and Assign Roles 角色权限控制插件

    1、下载插件:Role-based Authorization Strategy,安装成功后,可以重启下

    MyJie
  • finecms如何调用自定义内容

      我们建站的时间经常会有一些固定的元素,比如电话、地址等,这种相对比较简单的东西可以让编辑人员直接在后台就可以定义,那么finecms有没有这个功能呢?怎么定...

    ytkah
  • 小派推出新款Knuckles式控制器,五指追踪,支持SteamVR 2.0

    VRPinea
  • python之基础篇(三)

          python使用缩进来分隔代码组,同一代码组的代码行必须严格左对齐,否则会造成语法错误

    py3study

扫码关注云+社区

领取腾讯云代金券