我决定从原始指针转移到智能指针,所以我可以从阅读http://en.cppreference.com/w/cpp/memory/auto_ptr开始。
在那里,我看到它们专门用于void
.
为什么是这样?在任何情况下都有用吗?
我决定从原始指针转移到智能指针,所以我可以从阅读http://en.cppreference.com/w/cpp/memory/auto_ptr开始。
在那里,我看到它们专门用于void
.
为什么是这样?在任何情况下都有用吗?
std::auto_ptr
自 C++11 起已弃用。考虑研究其他智能指针,例如std::shared_ptr
and unique_ptr
。
你的问题的答案是(据我所知):std::auto_ptr
用于delete
释放其内部原始指针的内存,但删除void*
根本没有意义,因为 void 是不完整的类型,永远不可能是对象的类型。在删除之前,您必须将 void* 转换为指向数据的相应类型。因此,此智能指针提供了一种void
功能较少的特化(请注意,参考文献中说void 特化没有成员函数)。