155 lines
8.7 KiB
HTML
155 lines
8.7 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
|
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<title>std::auto_ptr</title>
|
|
<link rel="stylesheet" href="ext.css" />
|
|
<link rel="stylesheet" href="site_modules.css" />
|
|
</head>
|
|
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-cpp_memory_auto_ptr skin-cppreference2 action-view cpp-navbar">
|
|
<div id="cpp-content-base">
|
|
<div id="content"><a id="top"></a>
|
|
<h1 id="firstHeading" class="firstHeading"><span style="font-size:0.7em; line-height:130%">std::</span>auto_ptr</h1>
|
|
<div id="bodyContent">
|
|
<div id="contentSub"><span class="subpages">< <a href="cpp.html">cpp</a>‎ | <a href="cpp-memory.html">memory</a></span></div>
|
|
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
|
<table class="t-dcl-begin">
|
|
<tbody>
|
|
<tr class="t-dsc-header">
|
|
<td>
|
|
<div>定义于头文件 <code><a href="cpp-header-memory.html"><memory></a></code></div>
|
|
</td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="t-dcl t-until-cxx17">
|
|
<td>
|
|
<div><span class="mw-geshi cpp source-cpp"><span class="kw1">template</span><span class="sy1"><</span> <span class="kw1">class</span> T <span class="sy1">></span> <span class="kw1">class</span> auto_ptr<span class="sy4">;</span></span></div>
|
|
</td>
|
|
<td>(1)</td>
|
|
<td><span class="t-mark">(C++11 中弃用)</span><br />
|
|
<span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></td>
|
|
</tr>
|
|
<tr class="t-dcl t-until-cxx17">
|
|
<td>
|
|
<div><span class="mw-geshi cpp source-cpp"><span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">class</span> auto_ptr<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span><span class="sy4">;</span></span></div>
|
|
</td>
|
|
<td>(2)</td>
|
|
<td><span class="t-mark">(C++11 中弃用)</span><br />
|
|
<span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></td>
|
|
</tr>
|
|
<tr class="t-dcl-sep">
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p><code>auto_ptr</code> 是通过由 <a href="cpp-language-new.html">new 表达式</a>获得的对象,并在 <code>auto_ptr</code> 自身被销毁时删除该对象的智能指针。它可用于为动态分配的对象提供异常安全、传递动态分配对象的所有权给函数和从函数返回动态分配的对象。</p>
|
|
<p>复制 <code>auto_ptr</code> ,会复制指针并转移所有权给目标: <code>auto_ptr</code> 的复制构造和复制赋值都会修改其右侧参数,而且“副本”不等于原值。因为这些不常见的复制语义,不可将 <code>auto_ptr</code> 置于标准容器中。<span class="t-rev-inl t-since-cxx11"><span>此用途及其他使用更适合用 <span class="t-lc"><a href="cpp-memory-unique_ptr.html">std::unique_ptr</a></span> 。</span> <span><span class="t-mark-rev t-since-cxx11">(C++11 起)</span></span></span></p>
|
|
<div class="t-li1"><span class="t-li">2)</span> 提供对类型 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">void</span></span></span> 的特化,它声明 typedef <code>element_type</code> ,但无成员函数。</div>
|
|
<p>文档中到处使用附加的类模板 <code>auto_ptr_ref</code> 。它是保有到 <code>auto_ptr</code> 引用的实现定义类型。允许实现提供拥有不同名称的模板,或以其他方式实现返回它或接受它为参数的函数。</p>
|
|
<h3><span class="mw-headline" id=".E6.88.90.E5.91.98.E7.B1.BB.E5.9E.8B">成员类型</span></h3>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc-hitem">
|
|
<td>成员类型</td>
|
|
<td>定义</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">element_type</span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">T</span></span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E6.88.90.E5.91.98.E5.87.BD.E6.95.B0">成员函数</span></h3>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div t-dsc-member-nobold-div">
|
|
<div><a href="cpp-memory-auto_ptr-auto_ptr.html"><span class="t-lines"><span>(构造函数)</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>创建新的 <code>auto_ptr</code><br />
|
|
<span class="t-mark">(公开成员函数)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div t-dsc-member-nobold-div">
|
|
<div><a href="cpp-memory-auto_ptr-~auto_ptr.html"><span class="t-lines"><span>(析构函数)</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>销毁 <code>auto_ptr</code> 和被管理对象<br />
|
|
<span class="t-mark">(公开成员函数)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-memory-auto_ptr-operator=.html"><span class="t-lines"><span>operator=</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>从另一 <code>auto_ptr</code> 转移所有权<br />
|
|
<span class="t-mark">(公开成员函数)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-memory-auto_ptr-operator_auto_ptr.html"><span class="t-lines"><span>operator auto_ptr<Y></span><span>operator auto_ptr_ref<Y></span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>转换被管理指针到指向另一类型的指针<br />
|
|
<span class="t-mark">(公开成员函数)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E8.A7.82.E5.AF.9F.E5.99.A8">观察器</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-memory-auto_ptr-get.html"><span class="t-lines"><span>get</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>返回指向被管理对象的指针<br />
|
|
<span class="t-mark">(公开成员函数)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-memory-auto_ptr-operator*.html"><span class="t-lines"><span>operator*</span><span>operator-></span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>访问被管理对象<br />
|
|
<span class="t-mark">(公开成员函数)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E4.BF.AE.E6.94.B9.E5.99.A8">修改器</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-memory-auto_ptr-reset.html"><span class="t-lines"><span>reset</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>替换被管理对象<br />
|
|
<span class="t-mark">(公开成员函数)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-memory-auto_ptr-release.html"><span class="t-lines"><span>release</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>释放被管理对象的所有权<br />
|
|
<span class="t-mark">(公开成员函数)</span></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="visualClear"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|