Namespaces
Variants

std:: auto_ptr

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
定义于头文件 <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 是处理此类及其他场景的更优选择。 (since C++11)

2) 针对 void 类型的特化版本已提供,它声明了 typedef element_type ,但不包含任何成员函数。

文档中多次提及一个额外的类模板 auto_ptr_ref 。这是一个实现定义的类型,用于持有对 auto_ptr 的引用。实现允许为该模板提供不同名称,或以其他方式实现返回该类型或接受该类型作为参数的函数。

目录

成员类型

成员类型 定义
element_type T

成员函数

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