08 January 2023

C++ 核心指南目录

C.151: Use make_shared() to construct objects owned by shared_ptr’s

理由

make_shared()代码看起来更简洁。同时也能避免中间步骤分配引用计数。

例子

shared_ptr<X> p1 { new X{2} }; // bad
auto p = make_shared<X>(2);    // good

make_shared() 那句只提到了一次 X ,所以更精简,速度更快。

强化

  • (简单)对使用 new 创建shared_ptr的情况提出报警。