命名空间
变体
操作

std::auto_ptr

来自 cppreference.cn
< cpp‎ | memory
 
 
内存管理库
(仅为说明目的*)
未初始化内存算法
(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) (在 C++11 中已弃用)
(在 C++17 中已移除)
template<> class auto_ptr<void>;
(2) (在 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 的引用。允许实现提供具有不同名称的模板,或以其他方式实现返回或接受它作为参数的函数。

内容

[edit] 成员类型

成员类型 定义
element_type T

[edit] 成员函数

创建一个新的 auto_ptr
(公共成员函数) [edit]
销毁一个 auto_ptr 和被管理的对象
(公共成员函数) [edit]
从另一个 auto_ptr 转移所有权
(公共成员函数) [edit]
将管理的指针转换为指向不同类型的指针
(公共成员函数) [edit]
观察器
返回指向被管理对象的指针
(公共成员函数) [edit]
访问被管理的对象
(公共成员函数) [edit]
修改器
替换被管理的对象
(公共成员函数) [edit]
释放被管理对象的所有权
(公共成员函数) [edit]