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

351 lines
42 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>&#24341;&#29992;&#21021;&#22987;&#21270;</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_reference_initialization skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">&#24341;&#29992;&#21021;&#22987;&#21270;</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>&#23558;&#19968;&#20010;&#24341;&#29992;&#32465;&#23450;&#21040;&#19968;&#20010;&#23545;&#35937;&#12290;</p>
<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>
<p><span class="t-spar">T</span> <code><b>&amp;</b></code> <span class="t-spar">&#24341;&#29992;</span> <code><b>=</b></code> <span class="t-spar">&#30446;&#26631;</span> <code><b>;</b></code></p>
<p><span class="t-spar">T</span> <code><b>&amp;</b></code> <span class="t-spar">&#24341;&#29992;</span> <code><b>=</b></code> <code><b>{</b></code> <span class="t-spar">&#23454;&#21442;1, &#23454;&#21442;2, ...</span> <code><b>};</b></code></p>
<p><span class="t-spar">T</span> <code><b>&amp;</b></code> <span class="t-spar">&#24341;&#29992;</span> <code><b>(</b></code> <span class="t-spar">&#30446;&#26631;</span> <code><b>)</b></code> <code><b>;</b></code></p>
<p><span class="t-spar">T</span> <code><b>&amp;</b></code> <span class="t-spar">&#24341;&#29992;</span> <code><b>{</b></code> <span class="t-spar">&#23454;&#21442;1, &#23454;&#21442;2, ...</span> <code><b>}</b></code> <code><b>;</b></code></p>
</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>
<p><span class="t-spar">T</span> <code><b>&amp;&amp;</b></code> <span class="t-spar">&#24341;&#29992;</span> <code><b>=</b></code> <span class="t-spar">&#30446;&#26631;</span> <code><b>;</b></code></p>
<p><span class="t-spar">T</span> <code><b>&amp;&amp;</b></code> <span class="t-spar">&#24341;&#29992;</span> <code><b>=</b></code> <code><b>{</b></code> <span class="t-spar">&#23454;&#21442;1, &#23454;&#21442;2, ...</span> <code><b>};</b></code></p>
<p><span class="t-spar">T</span> <code><b>&amp;&amp;</b></code> <span class="t-spar">&#24341;&#29992;</span> <code><b>(</b></code> <span class="t-spar">&#30446;&#26631;</span> <code><b>)</b></code> <code><b>;</b></code></p>
<p><span class="t-spar">T</span> <code><b>&amp;&amp;</b></code> <span class="t-spar">&#24341;&#29992;</span> <code><b>{</b></code> <span class="t-spar">&#23454;&#21442;1, &#23454;&#21442;2, ...</span> <code><b>}</b></code> <code><b>;</b></code></p>
</td>
<td>(2)</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>&#32473;&#23450; <span class="t-spar">R</span> <span class="t-spar">&#20989;&#25968;</span> <code><b>(</b></code> <span class="t-spar">T</span> <code><b>&amp;</b></code> <span class="t-spar">&#23454;&#21442;</span> <code><b>);</b></code> <span class="t-rev-inl t-since-cxx11"><span>&#25110; <span class="t-spar">R</span> <span class="t-spar">&#20989;&#25968;</span> <code><b>(</b></code> <span class="t-spar">T</span> <code><b>&amp;&amp;</b></code> <span class="t-spar">&#23454;&#21442;</span> <code><b>);</b></code></span> <span><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></span></span>
<p><span class="t-spar">&#20989;&#25968;</span> <code><b>(</b></code> <span class="t-spar">&#30446;&#26631;</span> <code><b>)</b></code></p>
<p><span class="t-spar">&#20989;&#25968;</span> <code><b>(</b></code> <code><b>{</b></code> <span class="t-spar">&#23454;&#21442;1, &#23454;&#21442;2, ...</span> <code><b>}</b></code> <code><b>)</b></code></p>
</td>
<td>(3)</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">T</span> <code><b>&amp;</b></code> <span class="t-spar">&#20989;&#25968;</span> <code><b>()</b></code> <span class="t-rev-inl t-since-cxx11"><span>&#25110; <span class="t-spar">T</span> <code><b>&amp;&amp;</b></code> <span class="t-spar">&#20989;&#25968;</span> <code><b>()</b></code></span> <span><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></span></span> &#20869;
<p><code><b>return</b></code> <span class="t-spar">&#30446;&#26631;</span> <code><b>;</b></code></p>
</td>
<td>(4)</td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td>&#32473;&#23450; <span class="t-spar">&#31867;</span> &#20869;&#30340; <span class="t-spar">T</span> <code><b>&amp;</b></code> <span class="t-spar">&#24341;&#29992;</span> <code><b>;</b></code> <span class="t-rev-inl t-since-cxx11"><span>&#25110; <span class="t-spar">T</span> <code><b>&amp;&amp;</b></code> <span class="t-spar">&#24341;&#29992;</span> <code><b>;</b></code></span> <span><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></span></span>
<p><span class="t-spar">&#31867;</span><code><b>::</b></code><span class="t-spar">&#31867;(...)</span> <code><b>:</b></code> <span class="t-spar">&#24341;&#29992;</span><code><b>(</b></code> <span class="t-spar">&#30446;&#26631;</span><code><b>)</b></code> {...}</p>
</td>
<td>(5)</td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E8.A7.A3.E9.87.8A">&#35299;&#37322;</span></h3>
<p>&#21040; <code>T</code> &#30340;&#24341;&#29992;&#33021;&#20197; <code>T</code> &#31867;&#22411;&#30340;&#23545;&#35937;&#12289;<code>T</code> &#31867;&#22411;&#30340;&#20989;&#25968;&#25110;&#21487;&#38544;&#24335;&#36716;&#25442;&#21040; <code>T</code> &#30340;&#23545;&#35937;&#21021;&#22987;&#21270;&#12290;&#24341;&#29992;&#19968;&#26086;&#21021;&#22987;&#21270;&#65292;&#20415;&#26080;&#27861;&#24341;&#29992;&#21478;&#19968;&#23545;&#35937;&#12290;</p>
<p>&#24341;&#29992;&#22312;&#19979;&#21015;&#24773;&#24418;&#21021;&#22987;&#21270;&#65306;</p>
<div class="t-li1"><span class="t-li">1)</span> &#20197;&#21021;&#22987;&#21270;&#22120;&#22768;&#26126;&#20855;&#21517;<a href="cpp-language-reference.html#.E5.B7.A6.E5.80.BC.E5.BC.95.E7.94.A8">&#24038;&#20540;&#24341;&#29992;</a>&#21464;&#37327;&#26102;</div>
<div class="t-li1"><span class="t-li">2)</span> &#20197;&#21021;&#22987;&#21270;&#22120;&#22768;&#26126;&#20855;&#21517;<a href="cpp-language-reference.html#.E5.8F.B3.E5.80.BC.E5.BC.95.E7.94.A8">&#21491;&#20540;&#24341;&#29992;</a>&#21464;&#37327;&#26102;</div>
<div class="t-li1"><span class="t-li">3)</span> &#22312;&#20989;&#25968;&#35843;&#29992;&#34920;&#36798;&#24335;&#20013;&#19988;&#26377;&#20989;&#25968;&#24418;&#21442;&#25317;&#26377;&#24341;&#29992;&#31867;&#22411;&#26102;</div>
<div class="t-li1"><span class="t-li">4)</span> &#22312;&#20989;&#25968;&#30340; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw1">return</span></span></span> &#35821;&#21477;&#20013;&#19988;&#20989;&#25968;&#36820;&#22238;&#24341;&#29992;&#31867;&#22411;&#26102;</div>
<div class="t-li1"><span class="t-li">5)</span> &#20197;<a href="cpp-language-initializer_list.html" class="mw-redirect">&#25104;&#21592;&#21021;&#22987;&#21270;&#22120;</a>&#21021;&#22987;&#21270;&#24341;&#29992;&#31867;&#22411;&#30340;<a href="cpp-language-data_members.html">&#38750;&#38745;&#24577;&#25968;&#25454;&#25104;&#21592;</a>&#26102;</div>
<p>&#24341;&#29992;&#21021;&#22987;&#21270;&#30340;&#25928;&#26524;&#26159;&#65306;</p>
<ul>
<li>&#22914;&#26524;&#21021;&#22987;&#21270;&#22120;&#26159;&#33457;&#25324;&#21495;&#21021;&#22987;&#21270;&#22120;&#21015;&#34920; <code><b>{</b></code> <span class="t-spar">&#23454;&#21442;1, &#23454;&#21442;2, ...</span> <code><b>}</b></code> &#65292;&#37027;&#20040;&#36981;&#24490;<a href="cpp-language-list_initialization.html">&#21015;&#34920;&#21021;&#22987;&#21270;</a>&#12290;</li>
</ul>
<ul>
<li>&#21542;&#21017;&#65292;&#22914;&#26524;&#24341;&#29992;&#26159;&#24038;&#20540;&#24341;&#29992;&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>&#22914;&#26524; <span class="t-spar">&#30446;&#26631;</span> &#26159;&#24038;&#20540;&#34920;&#36798;&#24335;&#65292;&#19988;&#20854;&#31867;&#22411;&#20026; <code>T</code> &#25110;&#27966;&#29983;&#20110; <code>T</code>&#65292;&#32780;&#19988;&#26377;&#30456;&#31561;&#25110;&#26356;&#23569;&#30340; cv &#38480;&#23450;&#65292;&#37027;&#20040;&#24341;&#29992;&#34987;&#32465;&#23450;&#21040;&#24038;&#20540;&#34920;&#36798;&#24335;&#25152;&#26631;&#35782;&#30340;&#23545;&#35937;&#25110;&#20854;&#22522;&#31867;&#23376;&#23545;&#35937;&#12290;</li>
</ul>
</dd>
</dl>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw4">double</span> d <span class="sy1">=</span> <span class="nu16">2.0</span><span class="sy4">;</span>
<span class="kw4">double</span><span class="sy3">&amp;</span> rd <span class="sy1">=</span> d<span class="sy4">;</span> <span class="co1">// rd &#24341;&#29992; d</span>
<span class="kw4">const</span> <span class="kw4">double</span><span class="sy3">&amp;</span> rcd <span class="sy1">=</span> d<span class="sy4">;</span> <span class="co1">// rcd &#24341;&#29992; d</span>
<span class="kw1">struct</span> A <span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> B <span class="sy4">:</span> A <span class="br0">{</span><span class="br0">}</span> b<span class="sy4">;</span>
A<span class="sy3">&amp;</span> ra <span class="sy1">=</span> b<span class="sy4">;</span> <span class="co1">// ra &#24341;&#29992; b &#20013;&#30340; A &#23376;&#23545;&#35937;</span>
<span class="kw4">const</span> A<span class="sy3">&amp;</span> rca <span class="sy1">=</span> b<span class="sy4">;</span> <span class="co1">// rca &#24341;&#29992; b &#20013;&#30340; A &#23376;&#23545;&#35937;</span></pre></div>
</div>
<dl>
<dd>
<ul>
<li>&#21542;&#21017;&#65292;&#22914;&#26524; <span class="t-spar">&#30446;&#26631;</span> &#30340;&#31867;&#22411;&#19982; <code>T</code> &#19981;&#30456;&#21516;&#19988;&#19981;&#20174;&#23427;&#27966;&#29983;&#65292;&#19988; <span class="t-spar">&#30446;&#26631;</span> &#25317;&#26377;&#21040;&#31867;&#22411;&#20026; <code>T</code> &#25110;&#27966;&#29983;&#20110; <code>T</code> &#24182;&#26377;&#30456;&#31561;&#25110;&#26356;&#23569;&#30340; cv &#38480;&#23450;&#30340;&#24038;&#20540;&#30340;&#36716;&#25442;&#20989;&#25968;&#65292;&#37027;&#20040;&#32465;&#23450;&#24341;&#29992;&#21040;&#36716;&#25442;&#20989;&#25968;&#25152;&#36820;&#22238;&#30340;&#24038;&#20540;&#25152;&#26631;&#35782;&#30340;&#23545;&#35937;&#65288;&#25110;&#21040;&#20854;&#22522;&#31867;&#23376;&#23545;&#35937;&#65289;&#12290;</li>
</ul>
</dd>
</dl>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">struct</span> A <span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> B <span class="sy4">:</span> A <span class="br0">{</span> operator <span class="kw4">int</span><span class="sy3">&amp;</span><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">int</span><span class="sy3">&amp;</span> ir <span class="sy1">=</span> B<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// ir &#25351;&#20195; B::operator int&amp; &#30340;&#32467;&#26524;</span></pre></div>
</div>
<ul>
<li>&#21542;&#21017;&#65292;&#22914;&#26524;&#24341;&#29992;&#26159;&#21040;&#38750; volatile &#30340; const &#38480;&#23450;&#31867;&#22411;&#30340;&#24038;&#20540;&#24341;&#29992;<span class="t-rev-inl t-since-cxx11"><span>&#25110;&#21491;&#20540;&#24341;&#29992;</span> <span><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></span></span>&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>&#22914;&#26524; <span class="t-spar">&#30446;&#26631;</span> &#26159;&#38750;&#20301;&#22495;&#21491;&#20540;&#25110;&#20989;&#25968;&#24038;&#20540;&#65292;&#19988;&#20854;&#31867;&#22411;&#26159; <code>T</code> &#25110;&#27966;&#29983;&#20110; <code>T</code> &#65292;&#24182;&#25317;&#26377;&#30456;&#31561;&#25110;&#26356;&#23569; cv &#38480;&#23450;&#65292;&#37027;&#20040;&#32465;&#23450;&#24341;&#29992;&#21040;&#21021;&#22987;&#21270;&#22120;&#34920;&#36798;&#24335;&#30340;&#20540;&#25110;&#20854;&#22522;&#31867;&#23376;&#23545;&#35937;<span class="t-rev-inl t-since-cxx17"><span>&#65288;&#22914;&#26524;&#38656;&#35201;&#65292;&#20808;&#36827;&#34892;<a href="cpp-language-implicit_conversion.html#.E4.B8.B4.E6.97.B6.E9.87.8F.E5.AE.9E.E8.B4.A8.E5.8C.96">&#20020;&#26102;&#37327;&#23454;&#36136;&#21270;</a>&#65289;</span> <span><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></span></span>&#12290;</li>
</ul>
</dd>
</dl>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">struct</span> A <span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> B <span class="sy4">:</span> A <span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">extern</span> B f<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw4">const</span> A<span class="sy3">&amp;</span> rca2 <span class="sy1">=</span> f<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#21040; B &#21491;&#20540;&#30340; A &#23376;&#23545;&#35937;&#12290;</span>
A<span class="sy3">&amp;&amp;</span> rra <span class="sy1">=</span> f<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#21516;&#19978;</span>
<span class="kw4">int</span> i2 <span class="sy1">=</span> <span class="nu0">42</span><span class="sy4">;</span>
<span class="kw4">int</span><span class="sy3">&amp;&amp;</span> rri <span class="sy1">=</span> <span class="kw1">static_cast</span><span class="sy1">&lt;</span><span class="kw4">int</span><span class="sy3">&amp;&amp;</span><span class="sy1">&gt;</span><span class="br0">(</span>i2<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#30452;&#25509;&#32465;&#23450;&#21040; i2</span></pre></div>
</div>
<dl>
<dd>
<ul>
<li>&#21542;&#21017;&#65292;&#22914;&#26524; <span class="t-spar">&#30446;&#26631;</span> &#30340;&#31867;&#22411;&#19982; <code>T</code> &#19981;&#30456;&#21516;&#19988;&#19981;&#20174;&#23427;&#27966;&#29983;&#65292;&#19988; <span class="t-spar">&#30446;&#26631;</span> &#25317;&#26377;&#21040;&#31867;&#22411;&#20026; <code>T</code> &#25110;&#27966;&#29983;&#20110; <code>T</code> &#24182;&#26377;&#30456;&#31561;&#25110;&#26356;&#23569;&#30340; cv &#38480;&#23450;&#30340;&#21491;&#20540;&#25110;&#20989;&#25968;&#24038;&#20540;&#30340;&#36716;&#25442;&#20989;&#25968;&#65292;&#37027;&#20040;&#32465;&#23450;&#24341;&#29992;&#21040;&#36716;&#25442;&#20989;&#25968;&#30340;&#32467;&#26524;&#25110;&#21040;&#20854;&#22522;&#31867;&#23376;&#23545;&#35937;<span class="t-rev-inl t-since-cxx17"><span>&#65288;&#22914;&#26524;&#38656;&#35201;&#65292;&#20808;&#36827;&#34892;<a href="cpp-language-implicit_conversion.html#.E4.B8.B4.E6.97.B6.E9.87.8F.E5.AE.9E.E8.B4.A8.E5.8C.96">&#20020;&#26102;&#37327;&#23454;&#36136;&#21270;</a>&#65289;</span> <span><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></span></span>&#12290;</li>
</ul>
</dd>
</dl>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">struct</span> A <span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> B <span class="sy4">:</span> A <span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> X <span class="br0">{</span> operator B<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span> x<span class="sy4">;</span>
<span class="kw4">const</span> A<span class="sy3">&amp;</span> r <span class="sy1">=</span> x<span class="sy4">;</span> <span class="co1">// &#32465;&#23450;&#21040;&#36716;&#25442;&#32467;&#26524;&#30340; A &#23376;&#23545;&#35937;</span>
B<span class="sy3">&amp;&amp;</span> rrb <span class="sy1">=</span> x<span class="sy4">;</span> <span class="co1">// &#30452;&#25509;&#32465;&#23450;&#21040;&#36716;&#25442;&#30340;&#32467;&#26524;</span></pre></div>
</div>
<dl>
<dd>
<ul>
<li>&#21542;&#21017;&#65292;&#23558; <span class="t-spar">&#30446;&#26631;</span> &#38544;&#24335;&#36716;&#25442;&#20026; <code>T</code>&#12290;&#32465;&#23450;&#24341;&#29992;&#21040;&#36716;&#25442;<span class="t-rev-inl t-since-cxx17"><span>&#65288;&#22312;<a href="cpp-language-implicit_conversion.html#.E4.B8.B4.E6.97.B6.E9.87.8F.E5.AE.9E.E8.B4.A8.E5.8C.96">&#23454;&#36136;&#21270;&#20020;&#26102;&#37327;</a>&#21518;&#65292;&#21363;&#20351; <code>T</code> &#26159;&#26631;&#37327;&#31867;&#22411;&#20063;&#20445;&#25345;&#20854; cv &#38480;&#23450;&#65289;</span> <span><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></span></span>&#30340;&#32467;&#26524;&#12290;&#22914;&#26524; <span class="t-spar">&#30446;&#26631;</span>&#65288;&#25110;&#22914;&#26524;&#30001;&#29992;&#25143;&#23450;&#20041;&#36716;&#25442;&#20989;&#25968;&#36827;&#34892;&#36716;&#25442;&#65292;&#21017;&#20026;&#36716;&#25442;&#20989;&#25968;&#30340;&#32467;&#26524;&#65289;&#31867;&#22411;&#20026; <code>T</code> &#25110;&#27966;&#29983;&#20110; <code>T</code>&#65292;&#37027;&#20040;&#23427;&#24517;&#39035;&#25317;&#26377;&#31561;&#20110;&#25110;&#23569;&#20110; <code>T</code> &#30340; cv &#38480;&#23450;<span class="t-rev-inl t-since-cxx11"><span>&#65292;&#19988;&#22914;&#26524;&#24341;&#29992;&#20026;&#21491;&#20540;&#24341;&#29992;&#65292;&#37027;&#20040;&#23427;&#24517;&#39035;&#19981;&#26159;&#24038;&#20540;</span> <span><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></span></span>&#12290;</li>
</ul>
</dd>
</dl>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw4">const</span> <a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a><span class="sy3">&amp;</span> rs <span class="sy1">=</span> <span class="st0">&quot;abc&quot;</span><span class="sy4">;</span> <span class="co1">// rs &#25351;&#20195;&#20174;&#23383;&#31526;&#25968;&#32452;&#22797;&#21046;&#21021;&#22987;&#21270;&#30340;&#20020;&#26102;&#37327;</span>
<span class="kw4">const</span> <span class="kw4">double</span><span class="sy3">&amp;</span> rcd2 <span class="sy1">=</span> <span class="nu0">2</span><span class="sy4">;</span> <span class="co1">// rcd2 &#25351;&#20195;&#20540;&#20026; 2.0 &#30340;&#20020;&#26102;&#37327;</span>
<span class="kw4">int</span> i3 <span class="sy1">=</span> <span class="nu0">2</span><span class="sy4">;</span>
<span class="kw4">double</span><span class="sy3">&amp;&amp;</span> rrd3 <span class="sy1">=</span> i3<span class="sy4">;</span> <span class="co1">// rrd3 &#25351;&#20195;&#20540;&#20026; 2.0 &#30340;&#20020;&#26102;&#37327;</span></pre></div>
</div>
<h3><span class="mw-headline" id=".E4.B8.B4.E6.97.B6.E9.87.8F.E7.94.9F.E5.AD.98.E6.9C.9F">&#20020;&#26102;&#37327;&#29983;&#23384;&#26399;</span></h3>
<p>&#19968;&#26086;&#24341;&#29992;&#34987;&#32465;&#23450;&#21040;&#20020;&#26102;&#23545;&#35937;&#25110;&#20854;&#23376;&#23545;&#35937;&#65292;&#20020;&#26102;&#23545;&#35937;&#30340;&#29983;&#23384;&#26399;&#23601;&#34987;&#24310;&#32493;&#20197;&#21305;&#37197;&#24341;&#29992;&#30340;&#29983;&#23384;&#26399;&#65288;&#26816;&#26597;<a href="cpp-language-lifetime.html#.E4.B8.B4.E6.97.B6.E5.AF.B9.E8.B1.A1.E7.94.9F.E5.AD.98.E6.9C.9F">&#20020;&#26102;&#23545;&#35937;&#29983;&#23384;&#26399;&#30340;&#20363;&#22806;</a>&#65289;&#65292;&#20854;&#20013;&#20020;&#26102;&#23545;&#35937;&#25110;&#20854;&#23376;&#23545;&#35937;&#30001;&#19979;&#21015;&#34920;&#36798;&#24335;&#20043;&#19968;&#20195;&#34920;&#65306;</p>
<table class="t-rev-begin">
<tr class="t-rev t-until-cxx17">
<td>
<ul>
<li>&#23545;&#35937;&#31867;&#22411;&#30340;<a href="cpp-language-value_category.html#.E7.BA.AF.E5.8F.B3.E5.80.BC">&#32431;&#21491;&#20540;</a>&#34920;&#36798;&#24335;&#12289;</li>
</ul>
</td>
<td><span class="t-mark-rev t-until-cxx17">(C++17 &#21069;)</span></td>
</tr>
<tr class="t-rev t-since-cxx17">
<td>
<ul>
<li><a href="cpp-language-implicit_conversion.html#.E4.B8.B4.E6.97.B6.E9.87.8F.E5.AE.9E.E8.B4.A8.E5.8C.96">&#20020;&#26102;&#37327;&#23454;&#36136;&#21270;&#36716;&#25442;</a>&#12289;</li>
</ul>
</td>
<td><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></td>
</tr>
</table>
<ul>
<li>&#26377;&#25324;&#21495;&#34920;&#36798;&#24335; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="br0">(</span>e<span class="br0">)</span></span></span>&#65292;&#20854;&#20013; <span class="t-c"><span class="mw-geshi cpp source-cpp">e</span></span> &#26159;&#36825;&#20123;&#34920;&#36798;&#24335;&#20043;&#19968;&#12289;</li>
<li>&#24418;&#24335;&#20026; <span class="t-c"><span class="mw-geshi cpp source-cpp">a<span class="br0">[</span>n<span class="br0">]</span></span></span> &#25110; <span class="t-c"><span class="mw-geshi cpp source-cpp">n<span class="br0">[</span>a<span class="br0">]</span></span></span> &#30340;<a href="cpp-language-operator_member_access.html#.E5.86.85.E5.BB.BA.E7.9A.84.E4.B8.8B.E6.A0.87.E8.BF.90.E7.AE.97.E7.AC.A6">&#20869;&#24314;&#30340;&#19979;&#26631;&#34920;&#36798;&#24335;</a>&#65292;&#20854;&#20013; <span class="t-c"><span class="mw-geshi cpp source-cpp">a</span></span> &#26159;&#25968;&#32452;&#19988;&#20026;&#36825;&#20123;&#34920;&#36798;&#24335;&#20043;&#19968;&#12289;</li>
<li>&#24418;&#24335;&#20026; <span class="t-c"><span class="mw-geshi cpp source-cpp">e.<span class="me1">m</span></span></span> &#30340;<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;&#34920;&#36798;&#24335;</a>&#65292;&#20854;&#20013; <span class="t-c"><span class="mw-geshi cpp source-cpp">e</span></span> &#26159;&#36825;&#20123;&#34920;&#36798;&#24335;&#20043;&#19968;&#32780; <span class="t-c"><span class="mw-geshi cpp source-cpp">m</span></span> &#25351;&#20195;&#23545;&#35937;&#31867;&#22411;&#30340;&#38750;&#38745;&#24577;&#25968;&#25454;&#25104;&#21592;&#12289;</li>
<li>&#24418;&#24335;&#20026; <span class="t-c"><span class="mw-geshi cpp source-cpp">e.<span class="sy2">*</span>mp</span></span> &#30340;<a href="cpp-language-operator_member_access.html#.E5.86.85.E5.BB.BA.E7.9A.84.E6.88.90.E5.91.98.E6.8C.87.E9.92.88.E8.AE.BF.E9.97.AE.E8.BF.90.E7.AE.97.E7.AC.A6">&#25104;&#21592;&#25351;&#38024;&#25805;&#20316;</a>&#65292;&#20854;&#20013; <span class="t-c"><span class="mw-geshi cpp source-cpp">e</span></span> &#26159;&#36825;&#20123;&#34920;&#36798;&#24335;&#20043;&#19968;&#32780; <span class="t-c"><span class="mw-geshi cpp source-cpp">mp</span></span> &#26159;&#25351;&#21521;&#25968;&#25454;&#25104;&#21592;&#30340;&#25351;&#38024;&#12289;</li>
<li>&#26080;&#29992;&#25143;&#23450;&#20041;&#36716;&#25442;&#30340; <a href="cpp-language-const_cast.html"><code>const_cast</code></a>&#12289; <a href="cpp-language-static_cast.html"><code>static_cast</code></a>&#12289; <a href="cpp-language-dynamic_cast.html"><code>dynamic_cast</code></a> &#25110; <a href="cpp-language-reinterpret_cast.html"><code>reinterpret_cast</code></a> &#36716;&#25442;&#65292;&#23427;&#23558;&#36825;&#20123;&#34920;&#36798;&#24335;&#20043;&#19968;&#36716;&#25442;&#25104;&#25351;&#20195;&#25805;&#20316;&#25968;&#25152;&#25351;&#20195;&#30340;&#23545;&#35937;&#65292;&#20854;&#23436;&#25972;&#23545;&#35937;&#65292;&#25110;&#23436;&#25972;&#23545;&#35937;&#30340;&#23376;&#23545;&#35937;&#30340;&#27867;&#24038;&#20540;&#65288;<a href="cpp-language-explicit_cast.html">&#26174;&#24335;&#36716;&#22411;</a>&#34920;&#36798;&#24335;&#34987;&#36716;&#35793;&#25104;&#36825;&#20123;&#22522;&#30784;&#36716;&#22411;&#30340;&#24207;&#21015;&#65289;&#12289;</li>
<li>&#24418;&#24335;&#20026; <span class="t-c"><span class="mw-geshi cpp source-cpp">cond <span class="sy4">?</span> e1 <span class="sy4">:</span> e2</span></span> &#24182;&#20026;&#27867;&#24038;&#20540;&#30340;<a href="cpp-language-operator_other.html#.E6.9D.A1.E4.BB.B6.E8.BF.90.E7.AE.97.E7.AC.A6">&#26465;&#20214;&#34920;&#36798;&#24335;</a>&#65292;&#20854;&#20013; <span class="t-c"><span class="mw-geshi cpp source-cpp">e1</span></span> &#25110; <span class="t-c"><span class="mw-geshi cpp source-cpp">e2</span></span> &#20026;&#36825;&#20123;&#34920;&#36798;&#24335;&#20043;&#19968;&#65292;&#25110;</li>
<li>&#24418;&#24335;&#20026; <span class="t-c"><span class="mw-geshi cpp source-cpp">x, e</span></span> &#24182;&#20026;&#27867;&#24038;&#20540;&#30340;<a href="cpp-language-operator_other.html#.E5.86.85.E5.BB.BA.E7.9A.84.E9.80.97.E5.8F.B7.E8.BF.90.E7.AE.97.E7.AC.A6">&#20869;&#24314;&#30340;&#36887;&#21495;&#34920;&#36798;&#24335;</a>&#65292;&#20854;&#20013; <span class="t-c"><span class="mw-geshi cpp source-cpp">e</span></span> &#26159;&#36825;&#20123;&#34920;&#36798;&#24335;&#20043;&#19968;&#12290;</li>
</ul>
<p>&#27492;&#29983;&#23384;&#26399;&#35268;&#21017;&#26377;&#19979;&#21015;&#20363;&#22806;&#65306;</p>
<ul>
<li><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw1">return</span></span></span> &#35821;&#21477;&#20013;&#32465;&#23450;&#21040;&#20989;&#25968;&#36820;&#22238;&#20540;&#30340;&#20020;&#26102;&#37327;&#19981;&#34987;&#24310;&#32493;&#65306;&#23427;&#22312;&#36820;&#22238;&#34920;&#36798;&#24335;&#30340;&#26411;&#23614;&#31435;&#21363;&#38144;&#27585;&#12290;&#36825;&#31181; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw1">return</span></span></span> &#35821;&#21477;&#22987;&#32456;&#36820;&#22238;&#24748;&#22402;&#24341;&#29992;&#12290;</li>
<li>&#22312;&#20989;&#25968;&#35843;&#29992;&#20013;&#32465;&#23450;&#21040;&#20989;&#25968;&#24418;&#21442;&#30340;&#20020;&#26102;&#37327;&#65292;&#23384;&#22312;&#21040;&#21547;&#36825;&#27425;&#20989;&#25968;&#35843;&#29992;&#30340;&#20840;&#34920;&#36798;&#24335;&#32467;&#23614;&#20026;&#27490;&#65306;&#22914;&#26524;&#20989;&#25968;&#36820;&#22238;&#19968;&#20010;&#29983;&#21629;&#38271;&#20110;&#20840;&#34920;&#36798;&#24335;&#30340;&#24341;&#29992;&#65292;&#37027;&#20040;&#23427;&#23558;&#25104;&#20026;&#24748;&#22402;&#24341;&#29992;&#12290;</li>
</ul>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx11">
<td>
<ul>
<li>&#32465;&#23450;&#21040; new &#34920;&#36798;&#24335;&#20013;&#25152;&#29992;&#30340;&#21021;&#22987;&#21270;&#22120;&#20013;&#30340;&#24341;&#29992;&#30340;&#20020;&#26102;&#37327;&#65292;&#23384;&#22312;&#21040;&#21547;&#26377;&#35813; new &#34920;&#36798;&#24335;&#30340;&#20840;&#34920;&#36798;&#24335;&#32467;&#23614;&#20026;&#27490;&#65292;&#32780;&#38750;&#34987;&#21021;&#22987;&#21270;&#23545;&#35937;&#30340;&#23384;&#22312;&#26399;&#38388;&#12290;&#22914;&#26524;&#34987;&#21021;&#22987;&#21270;&#23545;&#35937;&#30340;&#22768;&#26126;&#38271;&#20110;&#20840;&#34920;&#36798;&#24335;&#65292;&#37027;&#20040;&#23427;&#30340;&#24341;&#29992;&#25104;&#21592;&#23558;&#25104;&#20026;&#24748;&#22402;&#24341;&#29992;&#12290;</li>
</ul>
</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></td>
</tr>
</table>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx20">
<td>
<ul>
<li>&#32465;&#23450;&#21040;&#29992;&#30452;&#25509;&#21021;&#22987;&#21270;&#35821;&#27861;&#65288;&#22278;&#25324;&#21495;&#65289;&#65292;&#32780;&#38750;&#21015;&#34920;&#21021;&#22987;&#21270;&#35821;&#27861;&#65288;&#33457;&#25324;&#21495;&#65289;&#21021;&#22987;&#21270;&#30340;&#32858;&#21512;&#20307;&#30340;&#24341;&#29992;&#20803;&#32032;&#20013;&#30340;&#24341;&#29992;&#30340;&#20020;&#26102;&#37327;&#65292;&#23384;&#22312;&#30452;&#33267;&#21547;&#35813;&#21021;&#22987;&#21270;&#22120;&#30340;&#20840;&#34920;&#36798;&#24335;&#26411;&#23614;&#20026;&#27490;&#12290;</li>
</ul>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">struct</span> A <span class="br0">{</span>
<span class="kw4">int</span><span class="sy3">&amp;&amp;</span> r<span class="sy4">;</span>
<span class="br0">}</span><span class="sy4">;</span>
A a1<span class="br0">{</span><span class="nu0">7</span><span class="br0">}</span><span class="sy4">;</span> <span class="co1">// OK&#65306;&#24310;&#32493;&#29983;&#23384;&#26399;</span>
A a2<span class="br0">(</span><span class="nu0">7</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#33391;&#26500;&#65292;&#20294;&#26377;&#24748;&#22402;&#24341;&#29992;</span></pre></div>
</div>
</td>
<td><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></td>
</tr>
</table>
<p>&#24635;&#32780;&#35328;&#20043;&#65292;&#20020;&#26102;&#37327;&#30340;&#29983;&#23384;&#26399;&#19981;&#33021;&#20197;&#36827;&#19968;&#27493;&ldquo;&#20256;&#36882;&rdquo;&#26469;&#24310;&#32493;&#65306;&#20174;&#32465;&#23450;&#20102;&#35813;&#20020;&#26102;&#37327;&#30340;&#24341;&#29992;&#25110;&#25968;&#25454;&#25104;&#21592;&#21021;&#22987;&#21270;&#30340;&#31532;&#20108;&#24341;&#29992;&#19981;&#24433;&#21709;&#20020;&#26102;&#37327;&#30340;&#29983;&#23384;&#26399;&#12290;</p>
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">&#27880;&#35299;</span></h3>
<p>&#20165;&#22312;&#20989;&#25968;&#24418;&#21442;&#22768;&#26126;&#65292;&#20989;&#25968;&#36820;&#22238;&#31867;&#22411;&#22768;&#26126;&#65292;&#31867;&#25104;&#21592;&#22768;&#26126;&#65292;&#20197;&#21450;&#24102; <code>extern</code> &#35828;&#26126;&#31526;&#26102;&#65292;&#24341;&#29992;&#21487;&#20197;&#19981;&#19982;&#21021;&#22987;&#21270;&#22120;&#19968;&#21516;&#20986;&#29616;&#12290;</p>
<p>&#22312; <a rel="nofollow" class="external text" href="https://wg21.cmeerw.net/cwg/issue1696">CWG &#38382;&#39064; 1696</a> &#30340;&#35299;&#20915;&#26041;&#26696;&#21069;&#65292;&#23481;&#35768;&#22312;&#26500;&#36896;&#20989;&#25968;<a href="cpp-language-initializer_list.html" class="mw-redirect">&#21021;&#22987;&#21270;&#22120;&#21015;&#34920;</a>&#20013;&#32465;&#23450;&#20020;&#26102;&#37327;&#21040;&#24341;&#29992;&#25104;&#21592;&#65292;&#32780;&#20020;&#26102;&#37327;&#21482;&#25345;&#32493;&#21040;&#26500;&#36896;&#20989;&#25968;&#36864;&#20986;&#21069;&#65292;&#32780;&#38750;&#23545;&#35937;&#23384;&#22312;&#26399;&#38388;&#12290;&#36825;&#31181;&#21021;&#22987;&#21270;&#20174; CWG 1696 &#24320;&#22987;&#38750;&#33391;&#26500;&#65292;&#19981;&#36807;&#35768;&#22810;&#32534;&#35793;&#22120;&#20173;&#28982;&#25903;&#25345;&#23427;&#65288;&#20540;&#24471;&#27880;&#24847;&#30340;&#20363;&#22806;&#26159; clang&#65289;&#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;utility&gt;</span>
<span class="co2">#include &lt;sstream&gt;</span>
<span class="kw1">struct</span> S <span class="br0">{</span>
<span class="kw4">int</span> mi<span class="sy4">;</span>
<span class="kw4">const</span> <a href="cpp-utility-pair.html"><span class="kw1096">std::<span class="me2">pair</span></span></a><span class="sy1">&lt;</span><span class="kw4">int</span>,<span class="kw4">int</span><span class="sy1">&gt;</span><span class="sy3">&amp;</span> mp<span class="sy4">;</span> <span class="co1">// &#24341;&#29992;&#25104;&#21592;</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">void</span> foo<span class="br0">(</span><span class="kw4">int</span><span class="br0">)</span> <span class="br0">{</span><span class="br0">}</span>
<span class="kw1">struct</span> A <span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> B <span class="sy4">:</span> A <span class="br0">{</span>
<span class="kw4">int</span> n<span class="sy4">;</span>
operator <span class="kw4">int</span><span class="sy3">&amp;</span><span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">return</span> n<span class="sy4">;</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="br0">}</span><span class="sy4">;</span>
B bar<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">return</span> B<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span>
<span class="co1">//int&amp; bad_r; // &#38169;&#35823;&#65306;&#27809;&#26377;&#21021;&#22987;&#21270;&#22120;</span>
<span class="kw4">extern</span> <span class="kw4">int</span><span class="sy3">&amp;</span> ext_r<span class="sy4">;</span> <span class="co1">// OK</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="co1">// &#24038;&#20540;</span>
<span class="kw4">int</span> n <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span>
<span class="kw4">int</span><span class="sy3">&amp;</span> r1 <span class="sy1">=</span> n<span class="sy4">;</span> <span class="co1">// &#21040;&#23545;&#35937; n &#30340;&#24038;&#20540;&#24341;&#29992;</span>
<span class="kw4">const</span> <span class="kw4">int</span><span class="sy3">&amp;</span> cr<span class="br0">(</span>n<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#24341;&#29992;&#21487;&#20197;&#26377;&#26356;&#22810; cv &#38480;&#23450;</span>
<span class="kw4">volatile</span> <span class="kw4">int</span><span class="sy3">&amp;</span> cv<span class="br0">{</span>n<span class="br0">}</span><span class="sy4">;</span> <span class="co1">// &#21487;&#20351;&#29992;&#20219;&#20309;&#21021;&#22987;&#21270;&#22120;&#35821;&#27861;</span>
<span class="kw4">int</span><span class="sy3">&amp;</span> r2 <span class="sy1">=</span> r1<span class="sy4">;</span> <span class="co1">// &#21478;&#19968;&#21040;&#23545;&#35937; n &#30340;&#24038;&#20540;&#24341;&#29992;</span>
<span class="co1">// int&amp; bad = cr; // &#38169;&#35823;&#65306;&#26356;&#23569; cv &#38480;&#23450;</span>
<span class="kw4">int</span><span class="sy3">&amp;</span> r3 <span class="sy1">=</span> <span class="kw1">const_cast</span><span class="sy1">&lt;</span><span class="kw4">int</span><span class="sy3">&amp;</span><span class="sy1">&gt;</span><span class="br0">(</span>cr<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#38656;&#35201; const_cast</span>
<span class="kw4">void</span> <span class="br0">(</span><span class="sy3">&amp;</span>rf<span class="br0">)</span><span class="br0">(</span><span class="kw4">int</span><span class="br0">)</span> <span class="sy1">=</span> foo<span class="sy4">;</span> <span class="co1">// &#21040;&#20989;&#25968;&#30340;&#24038;&#20540;&#24341;&#29992;</span>
<span class="kw4">int</span> ar<span class="br0">[</span><span class="nu0">3</span><span class="br0">]</span><span class="sy4">;</span>
<span class="kw4">int</span> <span class="br0">(</span><span class="sy3">&amp;</span>ra<span class="br0">)</span><span class="br0">[</span><span class="nu0">3</span><span class="br0">]</span> <span class="sy1">=</span> ar<span class="sy4">;</span> <span class="co1">// &#21040;&#25968;&#32452;&#30340;&#24038;&#20540;&#24341;&#29992;</span>
B b<span class="sy4">;</span>
A<span class="sy3">&amp;</span> base_ref <span class="sy1">=</span> b<span class="sy4">;</span> <span class="co1">// &#21040;&#22522;&#31867;&#23376;&#23545;&#35937;&#30340;&#24038;&#20540;&#24341;&#29992;</span>
<span class="kw4">int</span><span class="sy3">&amp;</span> converted_ref <span class="sy1">=</span> b<span class="sy4">;</span> <span class="co1">// &#21040;&#36716;&#25442;&#32467;&#26524;&#30340;&#24038;&#20540;&#24341;&#29992;</span>
<span class="co1">// &#21491;&#20540;</span>
<span class="co1">// int&amp; bad = 1; // &#38169;&#35823;&#65306;&#19981;&#33021;&#32465;&#23450;&#24038;&#20540;&#24341;&#29992;&#21040;&#21491;&#20540;</span>
<span class="kw4">const</span> <span class="kw4">int</span><span class="sy3">&amp;</span> cref <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span> <span class="co1">// &#32465;&#23450;&#21040;&#21491;&#20540;</span>
<span class="kw4">int</span><span class="sy3">&amp;&amp;</span> rref <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span> <span class="co1">// &#32465;&#23450;&#21040;&#21491;&#20540;</span>
<span class="kw4">const</span> A<span class="sy3">&amp;</span> cref2 <span class="sy1">=</span> bar<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#21040; B &#20020;&#26102;&#37327;&#30340; A &#23376;&#23545;&#35937;&#30340;&#24341;&#29992;</span>
A<span class="sy3">&amp;&amp;</span> rref2 <span class="sy1">=</span> bar<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#30456;&#21516;</span>
<span class="kw4">int</span><span class="sy3">&amp;&amp;</span> xref <span class="sy1">=</span> <span class="kw1">static_cast</span><span class="sy1">&lt;</span><span class="kw4">int</span><span class="sy3">&amp;&amp;</span><span class="sy1">&gt;</span><span class="br0">(</span>n<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#30452;&#25509;&#32465;&#23450;&#21040; n</span>
<span class="co1">// int&amp;&amp; copy_ref = n; // &#38169;&#35823;&#65306;&#19981;&#33021;&#32465;&#23450;&#21040;&#24038;&#20540;</span>
<span class="kw4">double</span><span class="sy3">&amp;&amp;</span> copy_ref <span class="sy1">=</span> n<span class="sy4">;</span> <span class="co1">// &#32465;&#23450;&#21040;&#20540;&#20026; 1.0 &#30340;&#21491;&#20540;&#20020;&#26102;&#37327;</span>
<span class="co1">// &#20020;&#26102;&#37327;&#29983;&#23384;&#26399;&#19978;&#30340;&#38480;&#21046;</span>
<a href="cpp-io-basic_ostream.html"><span class="kw1729">std::<span class="me2">ostream</span></span></a><span class="sy3">&amp;</span> buf_ref <span class="sy1">=</span> <a href="cpp-io-basic_ostringstream.html"><span class="kw1736">std::<span class="me2">ostringstream</span></span></a><span class="br0">(</span><span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;a&#39;</span><span class="sy4">;</span> <span class="co1">// ostringstream &#20020;&#26102;&#37327;</span>
<span class="co1">// &#34987;&#32465;&#23450;&#21040; operator&lt;&lt; &#30340;&#24038;&#36816;&#31639;&#25968;&#65292;&#20294;&#26159;&#23427;&#30340;&#29983;&#23384;&#26399;&#22312;&#20998;&#21495;&#32467;&#26463;&#65292;</span>
<span class="co1">// &#25152;&#20197; buf_ref &#26159;&#24748;&#22402;&#24341;&#29992;&#12290;</span>
S a <span class="br0">{</span> <span class="nu0">1</span>, <span class="br0">{</span><span class="nu0">2</span>, <span class="nu0">3</span><span class="br0">}</span> <span class="br0">}</span><span class="sy4">;</span> <span class="co1">// &#32465;&#23450;&#20020;&#26102;&#37327; pair {2,3} &#21040;&#24341;&#29992;&#25104;&#21592; a.mp &#24182;&#24310;&#38271;&#20854;&#29983;&#23384;&#26399;&#20197;&#21305;&#37197; a</span>
S<span class="sy2">*</span> p <span class="sy1">=</span> new S<span class="br0">{</span> <span class="nu0">1</span>, <span class="br0">{</span><span class="nu0">2</span>, <span class="nu0">3</span><span class="br0">}</span> <span class="br0">}</span><span class="sy4">;</span> <span class="co1">// &#32465;&#23450;&#20020;&#26102;&#37327; pair {2,3} &#21040;&#24341;&#29992;&#25104;&#21592; p-&gt;mp &#65292;</span>
<span class="co1">// &#20294;&#26159;&#23427;&#30340;&#29983;&#23384;&#26399;&#22312;&#20998;&#21495;&#32467;&#26463;</span>
<span class="co1">// p-&gt;mp &#26159;&#24748;&#22402;&#24341;&#29992;</span>
delete p<span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
</div>
<h3><span class="mw-headline" id=".E7.BC.BA.E9.99.B7.E6.8A.A5.E5.91.8A">&#32570;&#38519;&#25253;&#21578;</span></h3>
<p>&#19979;&#21015;&#26356;&#25913;&#34892;&#20026;&#30340;&#32570;&#38519;&#25253;&#21578;&#36861;&#28335;&#22320;&#24212;&#29992;&#20110;&#20197;&#21069;&#20986;&#29256;&#30340; C++ &#26631;&#20934;&#12290;</p>
<table class="dsctable" style="font-size:0.8em">
<tr>
<th>DR</th>
<th>&#24212;&#29992;&#20110;</th>
<th>&#20986;&#29256;&#26102;&#30340;&#34892;&#20026;</th>
<th>&#27491;&#30830;&#34892;&#20026;</th>
</tr>
<tr>
<td><a rel="nofollow" class="external text" href="https://wg21.cmeerw.net/cwg/issue1299">CWG 1299</a></td>
<td>C++98</td>
<td>&#20020;&#26102;&#37327;&#30340;&#23450;&#20041;&#19981;&#26126;&#30830;</td>
<td>&#20351;&#20043;&#26126;&#30830;</td>
</tr>
</table>
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">&#21442;&#38405;</span></h3>
<ul>
<li><a href="cpp-language-constructor.html">&#26500;&#36896;&#20989;&#25968;</a></li>
<li><a href="cpp-language-converting_constructor.html">&#36716;&#25442;&#26500;&#36896;&#20989;&#25968;</a></li>
<li><a href="cpp-language-copy_assignment.html">&#22797;&#21046;&#36171;&#20540;</a></li>
<li><a href="cpp-language-copy_constructor.html">&#22797;&#21046;&#26500;&#36896;&#20989;&#25968;</a></li>
<li><a href="cpp-language-explicit.html">explicit</a></li>
<li><a href="cpp-language-initialization.html">&#21021;&#22987;&#21270;</a>
<ul>
<li><a href="cpp-language-constant_initialization.html">&#24120;&#37327;&#21021;&#22987;&#21270;</a></li>
<li><a href="cpp-language-copy_initialization.html">&#22797;&#21046;&#21021;&#22987;&#21270;</a></li>
<li><a href="cpp-language-direct_initialization.html">&#30452;&#25509;&#21021;&#22987;&#21270;</a></li>
<li><a href="cpp-language-list_initialization.html">&#21015;&#34920;&#21021;&#22987;&#21270;</a></li>
</ul>
</li>
<li><a href="cpp-language-move_assignment.html">&#31227;&#21160;&#36171;&#20540;</a></li>
<li><a href="cpp-language-move_constructor.html">&#31227;&#21160;&#26500;&#36896;&#20989;&#25968;</a></li>
<li><a href="cpp-language-new.html">new</a></li>
</ul>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>