20 February 2023

C++ 核心指南目录

“Use unique_ptr or shared_ptr to represent ownership”

理由

可以避免资源泄漏。

例子

void f()
{
    X* p1 { new X };              // bad, p1 will leak
    auto p2 = make_unique<X>();   // good, unique ownership
    auto p3 = make_shared<X>();   // good, shared ownership
}

上面函数中,初始化 p1 指针的对象会泄漏。

强化

  • 警告:new 出来的对象赋值给原始指针的情况
  • 警告:函数的返回值是原始指针,并赋值给另一个原始指针的情况