为什么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进行测试
答案 0 :(得分:3)
为什么unique_ptr可以取得const ptr的所有权?
因为即使是常数变量也需要在不再需要时被破坏和释放。无论const
或volatile
关键字如何,内存和资源都会在未最终确定的变量上发生泄漏。
unique_ptr&lt;是什么意思? const T&gt;
uniqe_ptr<T>
具有的任何含义,除了它是const T
而不是T
。
//为什么unique_ptr可以获取const ptr,并在删除时删除它 解构?
我觉得您认为const
对象无法删除,因为它们是const
因此无法修改且不可破坏。这是错的。变量构造后const
启动,“停止”对变量破坏产生影响。否则,您无法创建任何const
变量,也不能销毁它们。