关于auto_ptr :: reset的问题

dat*_*ili 1 c++ pointers smart-pointers auto-ptr

请任何人从C++参考网站解释这段代码:

#include <iostream>
#include <memory>
using namespace std;

int main () {
  auto_ptr<int> p;

  p.reset (new int);
  *p=5;
  cout << *p << endl;

  p.reset (new int);
  *p=10;
  cout << *p << endl;

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

GMa*_*ckG 5

auto_ptr管理指针.reset将删除它拥有的指针,并指向其他东西.

所以你从一开始就auto_ptr p指向什么.当你reset使用时new int,它删除任何内容,然后指向动态分配int.然后你给它分配5 int.

然后你reset再次删除之前分配的int,然后指向新分配的int.然后,您将10分配给新的int.

当函数返回时,auto_ptr超出范围并调用其析构函数,删除最后分配int的程序并结束程序.