跳到主要内容

std::auto_ptr<T>::auto_ptr

定义于头文件 <memory>

C++11 中已弃用,C++17 中已移除
explicit auto_ptr( X* p = 0 ) throw();      (1)

auto_ptr( auto_ptr& r ) throw(); (2)

template< class Y >
auto_ptr( auto_ptr<Y>& r ) throw(); (3)

auto_ptr( auto_ptr_ref<X> m ) throw(); (4)

从指向要管理的对象指针构造 auto_ptr。

  1. 使用指针 p 构造 auto_ptr。

  2. 使用 r 中保存的指针构造 auto_ptr。将调用 r.release() 来获取对象的所有权。

  3. 同 (2)。Y* 必须可隐式转换为 T*

  4. 使用 m 引用的 auto_ptr 实例中保存的指针构造 auto_ptr。将调用 p.release() 来获取 m 所持有的 auto_ptr p 的对象所有权。auto_ptr_ref 是一个实现定义的类型,它保存对 auto_ptr 的引用。std::auto_ptr 可隐式转换为此类型并从此类型赋值。实现允许提供具有不同名称的模板或以其他方式实现等效功能。

参数

p - 指向要管理的对象指针 r - 另一个 auto_ptr,用于转移对象的所有权 m - 一个实现定义的类型,它保存对 auto_ptr 的引用

备注

提供了从 auto_ptr_ref 的构造函数和复制赋值运算符,以允许从无名临时变量复制构造和赋值 std::auto_ptr。由于其复制构造函数和复制赋值运算符接受非 const 引用作为参数,因此它们无法直接绑定 rvalue 参数。但是,可以执行用户定义的转换(该转换会释放原始的 std::auto_ptr),然后调用采用 auto_ptr_ref 作为值的构造函数或复制赋值运算符。这是移动语义的早期实现。

std::auto_ptr<T>::auto_ptr

定义于头文件 <memory>

C++11 中已弃用,C++17 中已移除
explicit auto_ptr( X* p = 0 ) throw();      (1)

auto_ptr( auto_ptr& r ) throw(); (2)

template< class Y >
auto_ptr( auto_ptr<Y>& r ) throw(); (3)

auto_ptr( auto_ptr_ref<X> m ) throw(); (4)

从指向要管理的对象指针构造 auto_ptr。

  1. 使用指针 p 构造 auto_ptr。

  2. 使用 r 中保存的指针构造 auto_ptr。将调用 r.release() 来获取对象的所有权。

  3. 同 (2)。Y* 必须可隐式转换为 T*

  4. 使用 m 引用的 auto_ptr 实例中保存的指针构造 auto_ptr。将调用 p.release() 来获取 m 所持有的 auto_ptr p 的对象所有权。auto_ptr_ref 是一个实现定义的类型,它保存对 auto_ptr 的引用。std::auto_ptr 可隐式转换为此类型并从此类型赋值。实现允许提供具有不同名称的模板或以其他方式实现等效功能。

参数

p - 指向要管理的对象指针 r - 另一个 auto_ptr,用于转移对象的所有权 m - 一个实现定义的类型,它保存对 auto_ptr 的引用

备注

提供了从 auto_ptr_ref 的构造函数和复制赋值运算符,以允许从无名临时变量复制构造和赋值 std::auto_ptr。由于其复制构造函数和复制赋值运算符接受非 const 引用作为参数,因此它们无法直接绑定 rvalue 参数。但是,可以执行用户定义的转换(该转换会释放原始的 std::auto_ptr),然后调用采用 auto_ptr_ref 作为值的构造函数或复制赋值运算符。这是移动语义的早期实现。