如果只有 std::auto_ptr 可用,我是否仍应该使用智能指针?

Should I still use smart pointers if only std::auto_ptr i available?

本文关键字:指针 智能 是否 std auto 如果 可用 ptr      更新时间:2023-10-16

我目前正在处理的项目使用不支持C++11的旧编译器,因此没有可用的unique_ptr或shared_ptr。

我应该改用现已弃用的auto_ptr还是应该完全放弃使用智能指针?

如果你可以使用 Boost,它早在 C++11 标准化之前就已经提供了shared_ptr,所以一个合适的旧版本的 Boost 应该能够以 03 年兼容的方式提供这一点。

我建议你远离std::auto_ptr,因为它计划弃用。

但我会回避使用裸指针。

在 C++11 之前,您可以使用 Boost (www.boost.org( 中提供的智能指针类。如果做不到这一点,您可以滚动自己的版本,以便在标准库中可用后将其删除。请注意,std::shared_ptrstd::unique_ptr更容易实现,在后一种情况下,我相信您必须放弃可移植性,因为它需要移动语义才能正确实现。

也许你可以使用std::tr1::shared_ptr.

TR1: C++ 技术报告1 - 维基百科