智能指针析构函数与构造函数的顺序

class A {
  A() {
    std::cout << " init" << std::endl;
  }
~A() {
    std::cout << "close" << std::endl;
  }
};

int main () {
  std::shared_ptr<A> ptr = std::make_shared<A>();
  ptr = std::make_shared<A>();
  return 0;
}

结果

init
init
close
close

智能指针会先调用构造函数,然后调用前一个对象的析构函数。

posted @ 2022-06-15 09:30  cyssmile  阅读(158)  评论(0)    收藏  举报