Files
hustoj/web/cppreference-zh/chmhelp/cpp-language-destructor.html
2025-08-01 12:57:54 +08:00

283 lines
34 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>&#26512;&#26500;&#20989;&#25968;</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_language_destructor skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">&#26512;&#26500;&#20989;&#25968;</h1>
<div id="bodyContent">
<div id="contentSub"><span class="subpages">&lt; <a href="cpp.html">cpp</a>&lrm; | <a href="cpp-language.html">language</a></span></div>
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
<p>&#26512;&#26500;&#20989;&#25968;&#26159;<a href="cpp-language-lifetime.html">&#23545;&#35937;&#29983;&#23384;&#26399;</a>&#32456;&#32467;&#26102;&#35843;&#29992;&#30340;&#29305;&#27530;<a href="cpp-language-member_functions.html">&#25104;&#21592;&#20989;&#25968;</a>&#12290;&#26512;&#26500;&#20989;&#25968;&#30340;&#30446;&#30340;&#26159;&#37322;&#25918;&#23545;&#35937;&#21487;&#33021;&#22312;&#20854;&#29983;&#23384;&#26399;&#38388;&#33719;&#24471;&#30340;&#36164;&#28304;&#12290;</p>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx20">
<td>
<p>&#26512;&#26500;&#20989;&#25968;&#19981;&#33021;&#26159;<a href="cpp-language-coroutines.html">&#21327;&#31243;</a>&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E8.AF.AD.E6.B3.95">&#35821;&#27861;</span></h3>
<table class="t-sdsc-begin">
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><code><b>~</b></code> <span class="t-spar">&#31867;&#21517;</span> <code><b>();</b></code></td>
<td>(1)</td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><code><b>virtual</b></code> <code><b>~</b></code> <span class="t-spar">&#31867;&#21517;</span> <code><b>();</b></code></td>
<td>(2)</td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><span class="t-spar">&#22768;&#26126;&#35828;&#26126;&#31526;&#24207;&#21015;</span><span class="t-mark">(&#21487;&#36873;)</span> <code><b>~</b></code> <span class="t-spar">&#31867;&#21517;</span> <code><b>() = default;</b></code></td>
<td>(3)</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><span class="t-spar">&#22768;&#26126;&#35828;&#26126;&#31526;&#24207;&#21015;</span><span class="t-mark">(&#21487;&#36873;)</span> <code><b>~</b></code> <span class="t-spar">&#31867;&#21517;</span> <code><b>() = delete;</b></code></td>
<td>(4)</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><span class="t-spar">&#23646;&#24615;</span><span class="t-mark">(&#21487;&#36873;)</span> <span class="t-spar">&#22768;&#26126;&#35828;&#26126;&#31526;&#24207;&#21015;</span><span class="t-mark">(&#21487;&#36873;)</span> <span class="t-spar">&#26631;&#35782;&#34920;&#36798;&#24335;</span> <code><b>(</b></code> <code><b>void</b></code><span class="t-mark">(&#21487;&#36873;)</span> <code><b>)</b></code> <span class="t-spar">&#24322;&#24120;&#35828;&#26126;</span><span class="t-mark">(&#21487;&#36873;)</span> <span class="t-spar">requires&#23376;&#21477;</span><span class="t-mark">(&#21487;&#36873;)</span> <span class="t-spar">&#23646;&#24615;</span><span class="t-mark">(&#21487;&#36873;)</span> <code><b>;</b></code></td>
<td>(5)</td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
</table>
<div class="t-li1"><span class="t-li">1)</span> <span class="t-rev-inl t-since-cxx20"><span>&#39044;&#26399;&#30340;</span> <span><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></span></span>&#26512;&#26500;&#20989;&#25968;&#30340;&#20856;&#22411;&#22768;&#26126;</div>
<div class="t-li1"><span class="t-li">2)</span> &#34394;&#26512;&#26500;&#20989;&#25968;&#22312;&#22522;&#31867;&#20013;&#24120;&#20026;&#24517;&#35201;&#30340;</div>
<div class="t-li1"><span class="t-li">3)</span> &#24378;&#36843;&#32534;&#35793;&#22120;&#29983;&#25104;&#26512;&#26500;&#20989;&#25968;</div>
<div class="t-li1"><span class="t-li">4)</span> &#31105;&#29992;&#38544;&#24335;&#26512;&#26500;&#20989;&#25968;</div>
<div class="t-li1"><span class="t-li">5)</span> <span class="t-rev-inl t-since-cxx20"><span>&#39044;&#26399;&#30340;</span> <span><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></span></span>&#26512;&#26500;&#20989;&#25968;&#22768;&#26126;&#30340;&#27491;&#24335;&#35821;&#27861;</div>
<table class="t-par-begin">
<tr class="t-par">
<td><span class="t-spar">&#22768;&#26126;&#35828;&#26126;&#31526;&#24207;&#21015;</span></td>
<td>-</td>
<td><code>friend</code>&#12289;<code>inline</code>&#12289;<code>virtual</code><span class="t-rev-inl t-since-cxx20"><span>&#12289;<code>constexpr</code>&#12289;<code>consteval</code></span> <span><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></span></span></td>
</tr>
<tr class="t-par">
<td><span class="t-spar">&#26631;&#35782;&#34920;&#36798;&#24335;</span></td>
<td>-</td>
<td>&#22312;&#31867;&#23450;&#20041;&#20013;&#26102;&#65292;&#20026;&#31526;&#21495; <code><b>~</b></code> &#21518;&#38543; <span class="t-spar">&#31867;&#21517;</span>&#12290;&#22312;&#31867;&#27169;&#26495;&#20013;&#26102;&#65292;&#20026;&#31526;&#21495; <code><b>~</b></code> &#21518;&#38543;&#27169;&#26495;&#24403;&#21069;&#23454;&#20363;&#21270;&#30340;&#21517;&#23383;&#12290;&#22312;&#21629;&#21517;&#31354;&#38388;&#20316;&#29992;&#22495;&#65292;&#25110;&#22312;&#21478;&#19968;&#31867;&#30340;<a href="cpp-language-friend.html">&#21451;&#20803;</a>&#22768;&#26126;&#20013;&#26102;&#65292;&#20026; <i>&#23884;&#22871;&#21517;&#35828;&#26126;&#31526;</i> &#21518;&#38543;&#31526;&#21495; <code><b>~</b></code> &#20877;&#21518;&#38543;&#19982; <span class="t-spar">&#23884;&#22871;&#21517;&#35828;&#26126;&#31526;</span> &#25152;&#25351;&#21517;&#32773;&#30456;&#21516;&#30340; <span class="t-spar">&#31867;&#21517;</span>&#12290;&#35813;&#21517;&#23383;&#22312;&#20219;&#20309;&#24773;&#20917;&#19979;&#37117;&#24517;&#39035;&#26159;&#31867;&#25110;&#27169;&#26495;&#30340;&#23454;&#38469;&#21517;&#23383;&#65292;&#32780;&#38750; typedef&#12290;&#21487;&#20197;&#29992;&#19981;&#25913;&#21464;&#20854;&#21547;&#20041;&#30340;&#25324;&#21495;&#29615;&#32469;&#25972;&#20010; <span class="t-spar">&#26631;&#35782;&#34920;&#36798;&#24335;</span>&#12290;</td>
</tr>
<tr class="t-par">
<td><span class="t-spar">&#23646;&#24615;</span></td>
<td>-</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span> &#21487;&#36873;&#30340;&#20219;&#24847;&#25968;&#37327;<a href="cpp-language-attributes.html">&#23646;&#24615;</a>&#24207;&#21015;</td>
</tr>
<tr class="t-par">
<td><span class="t-spar">&#24322;&#24120;&#35828;&#26126;</span></td>
<td>-</td>
<td>&#19982;&#22312;&#20219;&#20309;&#20989;&#25968;&#22768;&#26126;&#20013;&#19968;&#26679;&#30340;&#24322;&#24120;&#35828;&#26126;&#65288;<span class="t-rev-inl t-until-cxx17"><span><a href="cpp-language-except_spec.html">&#21160;&#24577;&#24322;&#24120;&#35828;&#26126;</a></span> <span><span class="t-mark-rev t-until-cxx17">(C++17 &#21069;)</span></span></span>&#25110; <span class="t-rev-inl t-since-cxx11"><span><a href="cpp-language-noexcept_spec.html">noexcept &#35828;&#26126;</a></span> <span><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></span></span> &#20043;&#19968;&#65289;
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx11">
<td>
<p>&#22312;&#26377;&#26174;&#24335;&#25552;&#20379;&#24322;&#24120;&#35828;&#26126;&#26102;&#65292;&#20854;&#24322;&#24120;&#35828;&#26126;&#34987;&#35748;&#20026;&#26159;&#38544;&#24335;&#22768;&#26126;&#30340;&#26512;&#26500;&#20989;&#25968;&#65288;&#35265;&#19979;&#25991;&#65289;&#21487;&#33021;&#25152;&#29992;&#30340;&#24322;&#24120;&#35828;&#26126;&#20043;&#19968;&#12290;&#23427;&#22823;&#22810;&#25968;&#24773;&#20917;&#19979;&#26159; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw1">noexcept</span><span class="br0">(</span><span class="kw2">true</span><span class="br0">)</span></span></span>&#12290;&#22240;&#27492;&#25243;&#20986;&#24322;&#24120;&#30340;&#26512;&#26500;&#20989;&#25968;&#24517;&#39035;&#26174;&#24335;&#22768;&#26126;&#20026; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw1">noexcept</span><span class="br0">(</span><span class="kw2">false</span><span class="br0">)</span></span></span>&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></td>
</tr>
</table>
</td>
</tr>
<tr class="t-par">
<td><span class="t-spar">requires&#23376;&#21477;</span></td>
<td>-</td>
<td><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span> &#22768;&#26126;&#39044;&#26399;&#26512;&#26500;&#20989;&#25968;&#30340;&#20851;&#32852;<a href="cpp-language-constraints.html">&#32422;&#26463;</a>&#30340; requires &#23376;&#21477;&#65292;&#20026;&#20351;&#24471;&#39044;&#26399;&#26512;&#26500;&#20989;&#25968;&#34987;&#36873;&#20026;&#26512;&#26500;&#20989;&#25968;&#65292;&#23427;&#24517;&#39035;&#24471;&#21040;&#28385;&#36275;</td>
</tr>
</table>
<h3><span class="mw-headline" id=".E8.A7.A3.E9.87.8A">&#35299;&#37322;</span></h3>
<p>&#27599;&#24403;&#23545;&#35937;&#30340;<a href="cpp-language-lifetime.html">&#29983;&#23384;&#26399;</a>&#32467;&#26463;&#26102;&#37117;&#20250;&#35843;&#29992;&#26512;&#26500;&#20989;&#25968;&#65292;&#26102;&#38388;&#28857;&#21253;&#21547;&#65306;</p>
<ul>
<li><a href="cpp-utility-program-exit.html">&#31243;&#24207;&#32456;&#27490;</a>&#65292;&#23545;&#20110;&#20855;&#26377;&#38745;&#24577;<a href="cpp-language-storage_duration.html">&#23384;&#20648;&#26399;</a>&#30340;&#23545;&#35937;</li>
</ul>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx11">
<td>
<ul>
<li>&#36864;&#20986;&#32447;&#31243;&#65292;&#23545;&#20110;&#20855;&#26377;&#32447;&#31243;&#23616;&#37096;&#23384;&#20648;&#26399;&#30340;&#23545;&#35937;</li>
</ul>
</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></td>
</tr>
</table>
<ul>
<li>&#20316;&#29992;&#22495;&#32467;&#26463;&#65292;&#23545;&#20110;&#20855;&#26377;&#33258;&#21160;&#23384;&#20648;&#26399;&#30340;&#23545;&#35937;&#21644;&#29983;&#23384;&#26399;&#22240;&#32465;&#23450;&#21040;&#24341;&#29992;&#32780;&#24310;&#38271;&#30340;&#20020;&#26102;&#37327;</li>
<li><a href="cpp-language-delete.html">delete &#34920;&#36798;&#24335;</a>&#65292;&#23545;&#20110;&#20855;&#26377;&#21160;&#24577;&#23384;&#20648;&#26399;&#30340;&#23545;&#35937;</li>
<li>&#23436;&#25972;<a href="cpp-language-expressions.html">&#34920;&#36798;&#24335;</a>&#30340;&#32467;&#23614;&#65292;&#23545;&#20110;&#26080;&#21517;&#20020;&#26102;&#37327;</li>
<li><a href="cpp-language-throw.html">&#26632;&#22238;&#28335;</a>&#65292;&#23545;&#20110;&#20855;&#26377;&#33258;&#21160;&#23384;&#20648;&#26399;&#30340;&#23545;&#35937;&#65292;&#24403;&#26410;&#25429;&#25417;&#30340;&#24322;&#24120;&#33073;&#31163;&#20854;&#22359;&#26102;&#12290;</li>
</ul>
<p>&#26512;&#26500;&#20989;&#25968;&#20063;&#21487;&#20197;&#30452;&#25509;&#35843;&#29992;&#65292;&#20363;&#22914;&#38144;&#27585;&#29992;<a href="cpp-language-new.html">&#24067;&#32622; new</a> &#25110;&#36890;&#36807;&#20998;&#37197;&#22120;&#25104;&#21592;&#20989;&#25968;&#65288;&#22914; <a href="cpp-memory-allocator-destroy.html"><tt>std::allocator::destroy()</tt></a>&#65289;&#26500;&#36896;&#30340;&#23545;&#35937;&#12290;&#27880;&#24847;&#65292;&#23545;&#26222;&#36890;&#23545;&#35937;&#65288;&#22914;&#23616;&#37096;&#21464;&#37327;&#65289;&#30452;&#25509;&#35843;&#29992;&#26512;&#26500;&#20989;&#25968;&#20250;&#23548;&#33268;&#22312;&#20316;&#29992;&#22495;&#32467;&#26463;&#22788;&#20877;&#27425;&#35843;&#29992;&#26512;&#26500;&#20989;&#25968;&#26102;&#24341;&#21457;&#26410;&#23450;&#20041;&#34892;&#20026;&#12290;</p>
<p>&#22312;&#27867;&#22411;&#35821;&#22659;&#20013;&#65292;&#26512;&#26500;&#20989;&#25968;&#35843;&#29992;&#35821;&#27861;&#21487;&#20197;&#29992;&#20110;&#38750;&#31867;&#31867;&#22411;&#30340;&#23545;&#35937;&#65307;&#36825;&#34987;&#31216;&#20026;&#20266;&#26512;&#26500;&#20989;&#25968;&#35843;&#29992;&#65306;&#35265;<a href="cpp-language-operator_member_access.html#.E5.86.85.E5.BB.BA.E7.9A.84.E6.88.90.E5.91.98.E8.AE.BF.E9.97.AE.E8.BF.90.E7.AE.97.E7.AC.A6">&#25104;&#21592;&#35775;&#38382;&#36816;&#31639;&#31526;</a>&#12290;</p>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx20">
<td>
<h3><span class="mw-headline" id=".E9.A2.84.E6.9C.9F.E7.9A.84.E6.9E.90.E6.9E.84.E5.87.BD.E6.95.B0">&#39044;&#26399;&#30340;&#26512;&#26500;&#20989;&#25968;</span></h3>
<p>&#19968;&#20010;&#31867;&#21487;&#20197;&#26377;&#19968;&#20010;&#25110;&#22810;&#20010;&#39044;&#26399;&#30340;&#26512;&#26500;&#20989;&#25968;&#65292;&#20854;&#20013;&#20043;&#19968;&#20250;&#34987;&#36873;&#20026;&#31867;&#30340;&#26512;&#26500;&#20989;&#25968;&#12290;</p>
<p>&#20026;&#30830;&#23450;&#21738;&#20010;&#39044;&#26399;&#30340;&#26512;&#26500;&#20989;&#25968;&#26159;&#26512;&#26500;&#20989;&#25968;&#65292;<a href="cpp-language-overload_resolution.html">&#37325;&#36733;&#20915;&#35758;</a>&#20250;&#22312;&#31867;&#23450;&#20041;&#30340;&#26411;&#23614;&#20197;&#31354;&#23454;&#21442;&#21015;&#34920;&#65292;&#22312;&#31867;&#20013;&#22768;&#26126;&#30340;&#28508;&#22312;&#26512;&#26500;&#20989;&#25968;&#20043;&#38388;&#36827;&#34892;&#12290;&#22914;&#26524;&#37325;&#36733;&#20915;&#35758;&#22833;&#36133;&#65292;&#37027;&#20040;&#31243;&#24207;&#20026;&#35884;&#26500;&#12290;&#26512;&#26500;&#20989;&#25968;&#36873;&#25321;&#19981;&#20250; <a href="cpp-language-definition.html#.E5.8D.95.E4.B8.80.E5.AE.9A.E4.B9.89.E8.A7.84.E5.88.99.EF.BC.88ODR.EF.BC.89">odr &#24335;&#20351;&#29992;</a>&#36873;&#20013;&#30340;&#26512;&#26500;&#20989;&#25968;&#65292;&#32780;&#19988;&#36873;&#25321;&#30340;&#26512;&#26500;&#20989;&#25968;&#21487;&#20197;&#26159;&#24323;&#32622;&#30340;&#12290;</p>
<p>&#25152;&#26377;&#39044;&#26399;&#30340;&#26512;&#26500;&#20989;&#25968;&#37117;&#26159;&#29305;&#27530;&#25104;&#21592;&#20989;&#25968;&#12290;&#22914;&#26524;&#19981;&#23545;&#31867; <code>T</code> &#25552;&#20379;&#29992;&#25143;&#22768;&#26126;&#30340;&#39044;&#26399;&#30340;&#26512;&#26500;&#20989;&#25968;&#65292;&#37027;&#20040;&#32534;&#35793;&#22120;&#24635;&#26159;&#20250;&#22768;&#26126;&#19968;&#20010;&#65288;&#35265;&#21518;&#36848;&#65289;&#65292;&#32780;&#35813;&#38544;&#24335;&#22768;&#26126;&#30340;&#39044;&#26399;&#26512;&#26500;&#20989;&#25968;&#20063;&#26159; <code>T</code> &#30340;&#26512;&#26500;&#20989;&#25968;&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E9.9A.90.E5.BC.8F.E5.A3.B0.E6.98.8E.E7.9A.84.E6.9E.90.E6.9E.84.E5.87.BD.E6.95.B0">&#38544;&#24335;&#22768;&#26126;&#30340;&#26512;&#26500;&#20989;&#25968;</span></h3>
<p>&#22914;&#26524;&#19981;&#21521;<a href="cpp-language-class.html">&#31867;&#31867;&#22411;</a>&#65288;<span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw1">struct</span></span></span>&#12289;<span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw1">class</span></span></span> &#25110; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw1">union</span></span></span>&#65289;&#25552;&#20379;&#29992;&#25143;&#22768;&#26126;&#30340;&#26512;&#26500;&#20989;&#25968;&#65292;&#37027;&#20040;&#32534;&#35793;&#22120;&#24635;&#26159;&#20250;&#22768;&#26126;&#19968;&#20010;&#26512;&#26500;&#20989;&#25968;&#20316;&#20026;&#36825;&#20010;&#31867;&#30340; <code>inline public</code> &#25104;&#21592;&#12290;</p>
<p>&#19982;&#20219;&#20309;&#38544;&#24335;&#22768;&#26126;&#30340;&#29305;&#27530;&#25104;&#21592;&#20989;&#25968;&#30456;&#21516;&#65292;&#38544;&#24335;&#22768;&#26126;&#30340;&#26512;&#26500;&#20989;&#25968;&#30340;&#24322;&#24120;&#35828;&#26126;&#26159;&#19981;&#25243;&#20986;&#30340;&#65292;&#38500;&#38750;<span class="t-rev-inl t-since-cxx17"><span>&#20219;&#20309;&#28508;&#22312;&#26500;&#36896;&#30340;&#22522;&#31867;&#25110;&#25104;&#21592;&#30340;&#26512;&#26500;&#20989;&#25968;&#26159;<a href="cpp-language-noexcept_spec.html">&#28508;&#22312;&#25243;&#20986;</a>&#30340;</span> <span><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></span></span><span class="t-rev-inl t-until-cxx17"><span>&#38544;&#24335;&#23450;&#20041;&#20250;&#30452;&#25509;&#35843;&#29992;&#26377;&#19981;&#21516;&#24322;&#24120;&#35828;&#26126;&#30340;&#20989;&#25968;</span> <span><span class="t-mark-rev t-until-cxx17">(C++17 &#21069;)</span></span></span>&#12290;&#23454;&#36341;&#19978;&#65292;&#38544;&#24335;&#30340;&#26512;&#26500;&#20989;&#25968;&#26159; <code>noexcept</code> &#30340;&#65292;&#38500;&#38750;&#35813;&#31867;&#34987;&#26512;&#26500;&#20989;&#25968;&#20026; <code>noexcept(false)</code> &#30340;&#22522;&#31867;&#25110;&#25104;&#21592;&#25152;&ldquo;&#27602;&#23475;&rdquo;&#12290;</p>
<h3><span class="mw-headline" id=".E5.BC.83.E7.BD.AE.E7.9A.84.E9.9A.90.E5.BC.8F.E5.A3.B0.E6.98.8E.E7.9A.84.E6.9E.90.E6.9E.84.E5.87.BD.E6.95.B0">&#24323;&#32622;&#30340;&#38544;&#24335;&#22768;&#26126;&#30340;&#26512;&#26500;&#20989;&#25968;</span></h3>
<p>&#22914;&#26524;&#28385;&#36275;&#19979;&#21015;&#20219;&#19968;&#26465;&#20214;&#65292;&#37027;&#20040;&#31867; <code>T</code> &#30340;&#38544;&#24335;&#22768;&#26126;&#25110;&#39044;&#32622;&#30340;&#26512;&#26500;&#20989;&#25968;<span class="t-rev-inl t-until-cxx11"><span>&#19981;&#20250;&#34987;&#23450;&#20041;</span> <span><span class="t-mark-rev t-until-cxx11">(C++11 &#21069;)</span></span></span><span class="t-rev-inl t-since-cxx11"><span>&#34987;&#23450;&#20041;&#20026;<i>&#24323;&#32622;&#30340;</i></span> <span><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></span></span>&#65306;</p>
<ul>
<li><code>T</code> &#25317;&#26377;&#26080;&#27861;&#38144;&#27585;&#65288;&#25317;&#26377;&#34987;&#24323;&#32622;&#25110;&#19981;&#21487;&#35775;&#38382;&#30340;&#26512;&#26500;&#20989;&#25968;&#65289;&#30340;&#38750;&#38745;&#24577;&#25968;&#25454;&#25104;&#21592;</li>
<li><code>T</code> &#25317;&#26377;&#26080;&#27861;&#38144;&#27585;&#65288;&#25317;&#26377;&#34987;&#24323;&#32622;&#25110;&#19981;&#21487;&#35775;&#38382;&#30340;&#26512;&#26500;&#20989;&#25968;&#65289;&#30340;&#30452;&#25509;&#25110;&#34394;&#22522;&#31867;</li>
</ul>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx11">
<td>
<ul>
<li><code>T</code> &#26159;&#32852;&#21512;&#20307;&#24182;&#25317;&#26377;&#24102;&#38750;&#24179;&#20961;&#26512;&#26500;&#20989;&#25968;&#30340;&#21464;&#20307;&#25104;&#21592;&#12290;</li>
</ul>
</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></td>
</tr>
</table>
<ul>
<li>&#38544;&#24335;&#22768;&#26126;&#30340;&#26512;&#26500;&#20989;&#25968;&#26159;&#34394;&#20989;&#25968;&#65288;&#22240;&#20026;&#22522;&#31867;&#26377;&#34394;&#26512;&#26500;&#20989;&#25968;&#65289;&#65292;&#19988;&#23545;&#35299;&#20998;&#37197;&#20989;&#25968;&#65288;<span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-memory-new-operator_delete.html"><span class="kw689">operator delete</span></a><span class="br0">(</span><span class="br0">)</span></span></span>&#65289;&#30340;&#26597;&#25214;&#23548;&#33268;&#23545;&#26377;&#27495;&#20041;&#12289;&#34987;&#24323;&#32622;&#25110;&#19981;&#21487;&#35775;&#38382;&#20989;&#25968;&#30340;&#35843;&#29992;&#12290;</li>
</ul>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx20">
<td>
<p>&#22914;&#26524;&#39044;&#32622;&#30340; <code>T</code> &#30340;&#39044;&#26399;&#26512;&#26500;&#20989;&#25968;&#19981;&#26159; <code>T</code> &#30340;&#26512;&#26500;&#20989;&#25968;&#65292;&#37027;&#20040;&#23427;&#34987;&#23450;&#20041;&#20026;&#24323;&#32622;&#30340;&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E5.B9.B3.E5.87.A1.E6.9E.90.E6.9E.84.E5.87.BD.E6.95.B0">&#24179;&#20961;&#26512;&#26500;&#20989;&#25968;</span></h3>
<p>&#22914;&#26524;&#28385;&#36275;&#19979;&#21015;&#20840;&#37096;&#26465;&#20214;&#65292;&#37027;&#20040; <code>T</code> &#30340;&#26512;&#26500;&#20989;&#25968;&#26159;&#24179;&#20961;&#30340;&#65306;</p>
<ul>
<li>&#26512;&#26500;&#20989;&#25968;&#19981;&#26159;&#29992;&#25143;&#25552;&#20379;&#30340;&#65288;&#34920;&#31034;&#23427;&#26159;&#38544;&#24335;&#22768;&#26126;&#65292;&#25110;&#22312;&#20854;&#39318;&#20010;&#22768;&#26126;&#26174;&#24335;&#23450;&#20041;&#20026;&#39044;&#32622;&#30340;&#65289;</li>
<li>&#26512;&#26500;&#20989;&#25968;&#38750;&#34394;&#65288;&#21363;&#22522;&#31867;&#26512;&#26500;&#20989;&#25968;&#38750;&#34394;&#65289;</li>
<li>&#25152;&#26377;&#30452;&#25509;&#22522;&#31867;&#37117;&#25317;&#26377;&#24179;&#20961;&#26512;&#26500;&#20989;&#25968;</li>
<li>&#25152;&#26377;&#31867;&#31867;&#22411;&#65288;&#25110;&#31867;&#30340;&#25968;&#32452;&#31867;&#22411;&#65289;&#30340;&#38750;&#38745;&#24577;&#25968;&#25454;&#25104;&#21592;&#37117;&#25317;&#26377;&#24179;&#20961;&#26512;&#26500;&#20989;&#25968;</li>
</ul>
<p>&#24179;&#20961;&#26512;&#26500;&#20989;&#25968;&#26159;&#19981;&#36827;&#34892;&#20219;&#20309;&#21160;&#20316;&#30340;&#26512;&#26500;&#20989;&#25968;&#12290;&#26377;&#24179;&#20961;&#26512;&#26500;&#20989;&#25968;&#30340;&#23545;&#35937;&#19981;&#35201;&#27714; delete &#34920;&#36798;&#24335;&#65292;&#24182;&#21487;&#20197;&#36890;&#36807;&#31616;&#21333;&#22320;&#35299;&#20998;&#37197;&#20854;&#23384;&#20648;&#36827;&#34892;&#37322;&#25918;&#12290;&#25152;&#26377;&#19982; C &#35821;&#35328;&#20860;&#23481;&#30340;&#25968;&#25454;&#31867;&#22411;&#65288;POD &#31867;&#22411;&#65289;&#37117;&#26159;&#21487;&#20197;&#24179;&#20961;&#26512;&#26500;&#30340;&#12290;</p>
<h3><span class="mw-headline" id=".E9.9A.90.E5.BC.8F.E5.AE.9A.E4.B9.89.E7.9A.84.E6.9E.90.E6.9E.84.E5.87.BD.E6.95.B0">&#38544;&#24335;&#23450;&#20041;&#30340;&#26512;&#26500;&#20989;&#25968;</span></h3>
<p>&#22914;&#26524;&#38544;&#24335;&#22768;&#26126;&#30340;&#26512;&#26500;&#20989;&#25968;&#27809;&#26377;&#34987;&#24323;&#32622;&#65292;&#37027;&#20040;&#24403;&#23427;&#34987; <a href="cpp-language-definition.html#ODR_.E5.BC.8F.E4.BD.BF.E7.94.A8">ODR &#24335;&#20351;&#29992;</a>&#26102;&#65292;&#23427;&#20250;&#34987;&#32534;&#35793;&#22120;&#38544;&#24335;&#23450;&#20041;&#65288;&#21363;&#29983;&#25104;&#24182;&#32534;&#35793;&#20989;&#25968;&#20307;&#65289;&#12290;&#36825;&#20010;&#38544;&#24335;&#23450;&#20041;&#30340;&#26512;&#26500;&#20989;&#25968;&#25317;&#26377;&#31354;&#30340;&#20989;&#25968;&#20307;&#12290;<span class="t-rev-inl t-since-cxx20"><span>&#22914;&#26524;&#29983;&#25104;&#30340;&#26512;&#26500;&#20989;&#25968;&#28385;&#36275; <a href="cpp-language-constexpr.html">constexpr &#26512;&#26500;&#20989;&#25968;</a>&#30340;&#35201;&#27714;&#65292;&#37027;&#20040;&#23427;&#26159; <code>constexpr</code> &#30340;&#12290;</span> <span><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></span></span></p>
<h3><span class="mw-headline" id=".E6.9E.90.E6.9E.84.E5.BA.8F.E5.88.97">&#26512;&#26500;&#24207;&#21015;</span></h3>
<p>&#23545;&#20110;&#29992;&#25143;&#23450;&#20041;&#25110;&#38544;&#24335;&#23450;&#20041;&#30340;&#26512;&#26500;&#20989;&#25968;&#65292;&#22312;&#26512;&#26500;&#20989;&#25968;&#20307;&#25191;&#34892;&#21518;&#65292;&#32534;&#35793;&#22120;&#20250;&#20197;&#22768;&#26126;&#30340;&#36870;&#24207;&#35843;&#29992;&#35813;&#31867;&#30340;&#25152;&#26377;&#38750;&#38745;&#24577;&#38750;&#21464;&#20307;&#25104;&#21592;&#30340;&#26512;&#26500;&#20989;&#25968;&#65292;&#28982;&#21518;&#20197;<a href="cpp-language-initializer_list.html#.E5.88.9D.E5.A7.8B.E5.8C.96.E9.A1.BA.E5.BA.8F" class="mw-redirect">&#26500;&#36896;&#30340;&#36870;&#24207;</a>&#35843;&#29992;&#25152;&#26377;&#30452;&#25509;&#38750;&#34394;&#22522;&#31867;&#30340;&#26512;&#26500;&#20989;&#25968;&#65288;&#32487;&#32780;&#35843;&#29992;&#20854;&#25104;&#21592;&#19982;&#20854;&#22522;&#31867;&#30340;&#26512;&#26500;&#20989;&#25968;&#65292;&#20197;&#27492;&#31867;&#25512;&#65289;&#65292;&#26368;&#21518;&#65292;&#22914;&#26524;&#27492;&#23545;&#35937;&#31867;&#22411;&#20026;&#26368;&#32456;&#27966;&#29983;&#31867;&#65292;&#37027;&#20040;&#35843;&#29992;&#25152;&#26377;&#34394;&#22522;&#31867;&#30340;&#26512;&#26500;&#20989;&#25968;&#12290;</p>
<p>&#21363;&#20415;&#22312;&#30452;&#25509;&#35843;&#29992;&#26512;&#26500;&#20989;&#25968;&#26102;&#65288;&#20363;&#22914; <span class="t-c"><span class="mw-geshi cpp source-cpp">obj.~Foo<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span></span></span>&#65289;&#65292;<span class="t-c"><span class="mw-geshi cpp source-cpp">~Foo<span class="br0">(</span><span class="br0">)</span></span></span> &#20013;&#30340; return &#35821;&#21477;&#20063;&#19981;&#20250;&#31435;&#21363;&#23558;&#25511;&#21046;&#36820;&#22238;&#21040;&#35843;&#29992;&#26041;&#65306;&#23427;&#39318;&#20808;&#35843;&#29992;&#20854;&#25152;&#26377;&#25104;&#21592;&#21450;&#22522;&#31867;&#30340;&#26512;&#26500;&#20989;&#25968;&#12290;</p>
<h3><span class="mw-headline" id=".E8.99.9A.E6.9E.90.E6.9E.84.E5.87.BD.E6.95.B0">&#34394;&#26512;&#26500;&#20989;&#25968;</span></h3>
<p>&#36890;&#36807;&#25351;&#21521;&#22522;&#31867;&#30340;&#25351;&#38024;&#21024;&#38500;&#23545;&#35937;&#20250;&#24341;&#21457;&#26410;&#23450;&#20041;&#34892;&#20026;&#65292;&#38500;&#38750;&#22522;&#31867;&#30340;&#26512;&#26500;&#20989;&#25968;&#26159;<a href="cpp-language-virtual.html">&#34394;&#20989;&#25968;</a>&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">class</span> Base <span class="br0">{</span>
<span class="kw1">public</span><span class="sy4">:</span>
<span class="kw1">virtual</span> ~Base<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span><span class="br0">}</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">class</span> Derived <span class="sy4">:</span> <span class="kw1">public</span> Base <span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
Base<span class="sy2">*</span> b <span class="sy1">=</span> new Derived<span class="sy4">;</span>
delete b<span class="sy4">;</span> <span class="co1">// &#23433;&#20840;</span></pre></div>
</div>
<p>&#19968;&#26465;&#24120;&#29992;&#26041;&#38024;&#26159;&#65292;&#22522;&#31867;&#30340;&#26512;&#26500;&#20989;&#25968;&#24517;&#39035;<a rel="nofollow" class="external text" href="http://www.gotw.ca/publications/mill18.htm">&#26159;&#20844;&#24320;&#19988;&#34394;&#25110;&#21463;&#20445;&#25252;&#19988;&#38750;&#34394;&#20043;&#19968;</a></p>
<h3><span class="mw-headline" id=".E7.BA.AF.E8.99.9A.E6.9E.90.E6.9E.84.E5.87.BD.E6.95.B0">&#32431;&#34394;&#26512;&#26500;&#20989;&#25968;</span></h3>
<p><span class="t-rev-inl t-since-cxx20"><span>&#39044;&#26399;&#30340;</span> <span><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></span></span>&#26512;&#26500;&#20989;&#25968;&#21487;&#20197;&#22768;&#26126;&#20026;<a href="cpp-language-abstract_class.html">&#32431;&#34394;</a>&#30340;&#65292;&#20363;&#22914;&#23545;&#20110;&#38656;&#35201;&#22768;&#26126;&#20026;&#25277;&#35937;&#31867;&#65292;&#20294;&#27809;&#26377;&#20854;&#20182;&#21487;&#22768;&#26126;&#20026;&#32431;&#34394;&#30340;&#36866;&#21512;&#20989;&#25968;&#30340;&#22522;&#31867;&#12290;&#32431;&#34394;&#26512;&#26500;&#20989;&#25968;&#24517;&#39035;&#26377;&#23450;&#20041;&#65292;&#22240;&#20026;&#22312;&#38144;&#27585;&#27966;&#29983;&#31867;&#26102;&#65292;&#25152;&#26377;&#22522;&#31867;&#26512;&#26500;&#20989;&#25968;&#37117;&#20250;&#34987;&#35843;&#29992;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">class</span> AbstractBase <span class="br0">{</span>
<span class="kw1">public</span><span class="sy4">:</span>
<span class="kw1">virtual</span> ~AbstractBase<span class="br0">(</span><span class="br0">)</span> <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
<span class="br0">}</span><span class="sy4">;</span>
AbstractBase<span class="sy4">::</span>~AbstractBase<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span><span class="br0">}</span>
<span class="kw1">class</span> Derived <span class="sy4">:</span> <span class="kw1">public</span> AbstractBase <span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
<span class="co1">// AbstractBase obj; // &#32534;&#35793;&#38169;&#35823;</span>
Derived obj<span class="sy4">;</span> <span class="co1">// OK</span></pre></div>
</div>
<h3><span class="mw-headline" id=".E5.BC.82.E5.B8.B8">&#24322;&#24120;</span></h3>
<p>&#19982;&#20854;&#20182;&#20989;&#25968;&#19968;&#26679;&#65292;&#26512;&#26500;&#20989;&#25968;&#21487;&#20197;&#36890;&#36807;&#25243;&#20986;<a href="cpp-language-exceptions.html">&#24322;&#24120;</a>&#32456;&#27490;<span class="t-rev-inl t-since-cxx11"><span>&#65288;&#36825;&#36890;&#24120;&#35201;&#27714;&#23558;&#23427;&#26126;&#30830;&#22768;&#26126;&#20026; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw1">noexcept</span><span class="br0">(</span><span class="kw2">false</span><span class="br0">)</span></span></span>&#65289;</span> <span><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></span></span>&#65292;&#28982;&#32780;&#22914;&#26524;&#24688;&#22909;&#22312;<a href="cpp-language-throw.html">&#26632;&#22238;&#28335;</a>&#26399;&#38388;&#35843;&#29992;&#26512;&#26500;&#20989;&#25968;&#65292;&#37027;&#20040;&#20250;&#25913;&#20026;&#35843;&#29992; <span class="t-lc"><a href="cpp-error-terminate.html">std::terminate</a></span>&#12290;</p>
<p>&#34429;&#28982;&#26377;&#26102;&#20505;&#21487;&#20197;&#29992; <span class="t-lc"><a href="cpp-error-uncaught_exception.html">std::uncaught_exception</a></span> &#26469;&#26816;&#27979;&#36827;&#23637;&#20013;&#30340;&#26632;&#22238;&#28335;&#65292;&#20294;&#20801;&#35768;&#20219;&#20309;&#26512;&#26500;&#20989;&#25968;&#36890;&#36807;&#25243;&#24322;&#24120;&#32456;&#27490;&#36890;&#24120;&#34987;&#35748;&#20026;&#26159;&#22351;&#30340;&#23454;&#36341;&#12290;&#23613;&#31649;&#22914;&#27492;&#65292;&#19968;&#20123;&#24211;&#65288;&#22914; <a rel="nofollow" class="external text" href="https://github.com/SOCI/soci">SOCI</a> &#19982; <a rel="nofollow" class="external text" href="http://galeracluster.com/downloads/">Galera 3</a> &#31561;&#65289;&#20173;&#28982;&#20351;&#29992;&#20102;&#36825;&#39033;&#21151;&#33021;&#65292;&#23427;&#20204;&#21033;&#29992;&#20102;&#26080;&#21517;&#20020;&#26102;&#37327;&#30340;&#26512;&#26500;&#20989;&#25968;&#30340;&#33021;&#21147;&#65292;&#20197;&#22312;&#26500;&#36896;&#35813;&#20020;&#26102;&#37327;&#30340;&#23436;&#25972;&#34920;&#36798;&#24335;&#32467;&#26463;&#22788;&#25243;&#24322;&#24120;&#12290;</p>
<p>&#24211;&#22522;&#30784; TS v3 &#20013;&#30340; <a href="cpp-experimental-scope_success.html"><tt>std::experimental::scope_success</tt></a> &#21487;&#20197;&#25317;&#26377;<a href="cpp-experimental-scope_success-~scope_success.html">&#28508;&#22312;&#25243;&#20986;&#30340;&#26512;&#26500;&#20989;&#25968;</a>&#65292;&#23427;&#22312;&#27491;&#24120;&#36864;&#20986;&#20316;&#29992;&#22495;&#19988;&#36864;&#20986;&#20989;&#25968;&#25243;&#24322;&#24120;&#26102;&#25243;&#20986;&#24322;&#24120;&#12290;</p>
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">&#31034;&#20363;</span></h3>
<div class="t-example">
<div class="t-example-live-link"></div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co2">#include &lt;iostream&gt;</span>
<span class="kw1">struct</span> A
<span class="br0">{</span>
<span class="kw4">int</span> i<span class="sy4">;</span>
A <span class="br0">(</span> <span class="kw4">int</span> i <span class="br0">)</span> <span class="sy4">:</span> i <span class="br0">(</span> i <span class="br0">)</span>
<span class="br0">{</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;&#26500;&#36896; a&quot;</span> <span class="sy1">&lt;&lt;</span> i <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<span class="br0">}</span>
~A<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;&#26512;&#26500; a&quot;</span> <span class="sy1">&lt;&lt;</span> i <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="br0">}</span><span class="sy4">;</span>
A a0<span class="br0">(</span><span class="nu0">0</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
A a1<span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span>
A<span class="sy2">*</span> p<span class="sy4">;</span>
<span class="br0">{</span> <span class="co1">// &#23884;&#22871;&#30340;&#20316;&#29992;&#22495;</span>
A a2<span class="br0">(</span><span class="nu0">2</span><span class="br0">)</span><span class="sy4">;</span>
p <span class="sy1">=</span> new A<span class="br0">(</span><span class="nu0">3</span><span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span> <span class="co1">// a2 &#31163;&#24320;&#20316;&#29992;&#22495;</span>
delete p<span class="sy4">;</span> <span class="co1">// &#35843;&#29992; a3 &#30340;&#26512;&#26500;&#20989;&#25968;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#36755;&#20986;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="text source-text">
<pre class="de1">&#26500;&#36896; a0
&#26500;&#36896; a1
&#26500;&#36896; a2
&#26500;&#36896; a3
&#26512;&#26500; a2
&#26512;&#26500; a3
&#26512;&#26500; a1
&#26512;&#26500; a0</pre></div>
</div>
</div>
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">&#21442;&#38405;</span></h3>
<ul>
<li><a href="cpp-language-copy_elision.html">&#22797;&#21046;&#28040;&#38500;</a></li>
<li><a href="cpp-language-new.html"><code>new</code></a></li>
<li><a href="cpp-language-delete.html"><code>delete</code></a></li>
</ul>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>