std::auto_ptr
定义于头文件 <memory>
。
C++11 中已弃用,C++17 中已移除
// 1)
template< class T > class auto_ptr;
// 2)
template<> class auto_ptr<void>;
auto_ptr 是一种智能指针,用于管理通过 new 表达式获得的对象的生命周期,并在 auto_ptr 本身被销毁时删除该对象。它可用于为动态分配的对象提供异常安全性,以及在函数之间传递动态分配对象的所有权。
复制 auto_ptr 会复制指针并转移所有权:auto_ptr 的复制构造和复制赋值都会修改其右侧参数,并且“复制”与原始对象不相等。由于这些不寻常的复制语义,auto_ptr 不能放在标准容器中。
建议使用 std::unique_ptr 来代替 auto_ptr。(自 C++11 起)
- 提供了
void
类型的特化,它声明了 typedef 元素类型,但没有成员函数。
文档中多次提及一个额外的类模板 auto_ptr_ref。它是一种实现定义的类型,持有 auto_ptr 的引用。允许实现为该模板提供不同的名称,或以其他方式实现返回它或接受它作为参数的函数。
成员类型
公有成员 | 元素类型 | T |
成员函数
公有成员 | (构造函数) | 创建一个新的 auto_ptr (公共成员函数) |
公有成员 | (析构函数) | 销毁 auto_ptr 和所管理的对象 (公共成员函数) |
公有成员 | operator= | 从另一个 auto_ptr 转移所有权 (公共成员函数) |
公有成员 | operator auto_ptr<Y> operator auto_ptr_ref<Y> | 将管理的指针转换为不同类型的指针 (公共成员函数) |
观察者
公有成员 | get | 返回指向所管理对象的指针 (公共成员函数) |
公有成员 | operator* operator-> | 访问所管理的对象 (公共成员函数) |
修改器
公有成员 | reset | 替换托管对象 (公共成员函数) |
公有成员 | release | 释放对所管理对象的所有权 (公共成员函数) |