std::auto_ptr
来自 cppreference.cn
定义于头文件 <memory> |
||
template< class T > class auto_ptr; |
(1) | (deprecated in C++11) (在 C++17 中已移除) |
template<> class auto_ptr<void>; |
(2) | (deprecated in C++11) (在 C++17 中已移除) |
auto_ptr
是一个智能指针,用于管理通过 new 表达式获得的内存,并在 auto_ptr
自身被销毁时删除该对象。它可用于为动态分配的对象提供异常安全,将动态分配对象的所有权传递给函数,以及从函数返回动态分配对象。
复制 auto_ptr
会复制指针并将所有权转移到目标:auto_ptr
的复制构造和复制赋值都会修改其右侧参数,“复制”与原始对象不相等。由于这些不寻常的复制语义,auto_ptr
不能放入标准容器中。为此及其他用途,首选 std::unique_ptr。(C++11 起)
2) 提供了 void 类型的特化,它声明了 typedef
element_type
,但没有成员函数。文档中始终引用了一个额外的类模板 auto_ptr_ref
。它是一个实现定义的类型,持有对 auto_ptr
的引用。实现可以为该模板提供不同的名称,或者以其他方式实现返回它或接受它作为参数的函数。
目录 |
[编辑] 成员类型
成员类型 | 定义 |
element_type | T |
[编辑] 成员函数
创建新的 auto_ptr (public 成员函数) | |
销毁 auto_ptr 和所管理的对象(public 成员函数) | |
从另一个 auto_ptr 转移所有权(public 成员函数) | |
将所管理指针转换为指向不同类型的指针 (public 成员函数) | |
观察器 | |
返回指向托管对象的指针 (public 成员函数) | |
访问托管对象 (public 成员函数) | |
修改器 | |
替换托管对象 (public 成员函数) | |
释放所管理对象的所有权 (public 成员函数) |