如果只有 std::auto_ptr 我可用,我还应该使用智能指针吗?
Should I still use smart pointers if only std::auto_ptr i available?
我目前正在处理的项目使用不支持 C++11 的旧编译器,因此没有 unique_ptr 或 shared_ptr 可用。
我应该使用现已弃用的 auto_ptr 还是完全放弃使用智能指针?
我建议您离开 std::auto_ptr
,因为它已计划弃用。
但我会回避使用裸指针。
Pre C++11,您可以使用 Boost (www.boost.org) 中可用的智能指针 类。如果做不到这一点,您可以推出自己的版本,以便在它们在您的标准库中可用时将其删除。请注意,std::shared_ptr
比 std::unique_ptr
更容易实现,在后一种情况下,我相信您必须放弃可移植性,因为它需要 移动语义 才能正确实现.
如果你可以使用 Boost,它 has provided shared_ptr
早在它在 C++11 中被标准化之前,所以一个合适的旧版本的 Boost 应该能够在 ' 03兼容方式。
也许你可以使用 std::tr1::shared_ptr
。
tr1:
C++ 技术报告 1 - 维基百科
我目前正在处理的项目使用不支持 C++11 的旧编译器,因此没有 unique_ptr 或 shared_ptr 可用。
我应该使用现已弃用的 auto_ptr 还是完全放弃使用智能指针?
我建议您离开 std::auto_ptr
,因为它已计划弃用。
但我会回避使用裸指针。
Pre C++11,您可以使用 Boost (www.boost.org) 中可用的智能指针 类。如果做不到这一点,您可以推出自己的版本,以便在它们在您的标准库中可用时将其删除。请注意,std::shared_ptr
比 std::unique_ptr
更容易实现,在后一种情况下,我相信您必须放弃可移植性,因为它需要 移动语义 才能正确实现.
如果你可以使用 Boost,它 has provided shared_ptr
早在它在 C++11 中被标准化之前,所以一个合适的旧版本的 Boost 应该能够在 ' 03兼容方式。
也许你可以使用 std::tr1::shared_ptr
。
tr1: C++ 技术报告 1 - 维基百科