【发布时间】:2014-10-30 22:40:03
【问题描述】:
std::unique_ptr不是设计成一个指向内存的唯一指针,其他指针不应该指向这个内存吗?
那么为什么std:unique_ptr 有一个get() 成员函数,它返回一个指向std::unique_ptr 拥有的内存的原始指针?
所以通过使用get(),我们可以为std::unique_ptr 的内存创建大量所有者(原始指针),这不是没有意义吗?
【问题讨论】:
-
不是原始指针是所有者。如果你说它是,它只是一个所有者。
-
他们完全控制了他们指向的内存,为什么他们不被视为所有者?
-
只要您将指向已分配内存的指针放入
std::unique_ptr(在正确的范围内),您就可以在知道它的整个范围内安全地使用原始指针(通过get()获得)将在适当的时候被删除。 -
@Galik 在超出范围之前不能有人做
delete ptr.get()吗? -
@0x499602D2 有人可以这样做。 C++ 允许人们以多种方式做他们不应该做的事情,那么为什么这种特别的愚蠢应该是“不可能的”。正如我在回答中所解释的,如果没有
get函数,有些事情你根本做不到。
标签: c++ pointers smart-pointers