命名空间
变体
操作

std::auto_ptr

来自 cppreference.cn
< cpp‎ | 内存
 
 
内存管理库
(仅作说明*)
未初始化内存算法
(C++17)
(C++17)
(C++17)
受约束的未初始化
内存算法
C 库

分配器
内存资源
垃圾回收支持
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
未初始化存储
(直到 C++20*)
(直到 C++20*)
显式生命周期管理
 
 
定义于头文件 <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 成员函数) [编辑]