unique_ptr的意思<const t =“”>

时间:2016-08-20 21:53:22

标签: c++11

为什么unique_ptr可以归属const ptr

unique_ptr<const T>是什么意思?

  std::unique_ptr<int> a(new int);
  // Only this is compile error.                                 
  std::unique_ptr<int> b((const int*)new int);
  std::unique_ptr<const int> c(new int);
  // Why unique_ptr can take a const ptr, and delete it when deconstruct?
  std::unique_ptr<const int> d((const int*)new int);

使用g ++ 4.8进行测试

1 个答案:

答案 0 :(得分:3)

  

为什么unique_ptr可以取得const ptr的所有权?

因为即使是常数变量也需要在不再需要时被破坏和释放。无论constvolatile关键字如何,内存和资源都会在未最终确定的变量上发生泄漏。

  

unique_ptr&lt;是什么意思? const T&gt;

uniqe_ptr<T>具有的任何含义,除了它是const T而不是T

  

//为什么unique_ptr可以获取const ptr,并在删除时删除它   解构?

我觉得您认为const对象无法删除,因为它们是const因此无法修改且不可破坏。这是错的。变量构造后const启动,“停止”对变量破坏产生影响。否则,您无法创建任何const变量,也不能销毁它们。