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

458 lines
56 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>&#20316;&#29992;&#22495;</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_scope skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">&#20316;&#29992;&#22495;</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>C++ &#31243;&#24207;&#20013;&#20986;&#29616;&#30340;&#27599;&#20010;<a href="cpp-language-name.html" class="mw-redirect">&#21517;&#23383;</a>&#65292;&#21482;&#22312;&#26576;&#20123;&#21487;&#33021;&#19981;&#36830;&#32493;&#30340;&#28304;&#30721;&#37096;&#20998;&#20013;&#26377;&#25928;&#65292;&#36825;&#20123;&#37096;&#20998;&#34987;&#31216;&#20026;&#20854;<i>&#20316;&#29992;&#22495;</i>&#12290;</p>
<p>&#22312;&#20316;&#29992;&#22495;&#20869;&#65292;&#33021;&#29992;<a href="cpp-language-lookup.html">&#26080;&#38480;&#23450;&#21517;&#23383;&#26597;&#25214;</a>&#23558;&#21517;&#23383;&#19982;&#20854;&#22768;&#26126;&#20851;&#32852;&#36215;&#26469;&#12290;</p>
<h3><span class="mw-headline" id=".E5.9D.97.E4.BD.9C.E7.94.A8.E5.9F.9F">&#22359;&#20316;&#29992;&#22495;</span></h3>
<p><a href="cpp-language-statements.html#.E5.A4.8D.E5.90.88.E8.AF.AD.E5.8F.A5">&#22359;&#65288;&#22797;&#21512;&#35821;&#21477;&#65289;</a>&#20013;&#30340;&#22768;&#26126;&#25152;&#24341;&#20837;&#30340;&#21464;&#37327;&#30340;&#28508;&#22312;&#20316;&#29992;&#22495;&#65292;&#24320;&#22987;&#20110;&#20854;&#22768;&#26126;&#28857;&#24182;&#32456;&#27490;&#20110;&#35813;&#22359;&#26411;&#23614;&#12290;&#23454;&#38469;&#20316;&#29992;&#22495;&#19982;&#28508;&#22312;&#20316;&#29992;&#22495;&#30456;&#21516;&#65292;&#38500;&#38750;&#26377;&#20869;&#23884;&#22359;&#24102;&#26377;&#24341;&#20837;&#20102;&#30456;&#21516;&#21517;&#23383;&#30340;&#22768;&#26126;&#65288;&#36825;&#31181;&#24773;&#20917;&#19979;&#65292;&#20174;&#22806;&#23618;&#22768;&#26126;&#30340;&#20316;&#29992;&#22495;&#20013;&#25490;&#38500;&#25481;&#23884;&#22871;&#22768;&#26126;&#30340;&#25972;&#20010;&#28508;&#22312;&#20316;&#29992;&#22495;&#65289;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
<span class="kw4">int</span> a <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span> <span class="co1">// &#31532;&#19968;&#20010; &#39;a&#39; &#30340;&#20316;&#29992;&#22495;&#24320;&#22987;</span>
<span class="sy2">++</span>a<span class="sy4">;</span> <span class="co1">// &#21517;&#23383; &#39;a&#39; &#22312;&#20316;&#29992;&#22495;&#20013;&#24182;&#25351;&#20195;&#31532;&#19968;&#20010; &#39;a&#39;</span>
<span class="br0">{</span>
<span class="kw4">int</span> a <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span> <span class="co1">// &#31532;&#20108;&#20010; &#39;a&#39; &#30340;&#20316;&#29992;&#22495;&#24320;&#22987;</span>
<span class="co1">// &#31532;&#19968;&#20010; &#39;a&#39; &#30340;&#20316;&#29992;&#22495;&#38388;&#26029;</span>
a <span class="sy1">=</span> <span class="nu0">42</span><span class="sy4">;</span> <span class="co1">// &#39;a&#39; &#22312;&#20316;&#29992;&#22495;&#20013;&#24182;&#25351;&#20195;&#31532;&#20108;&#20010; &#39;a&#39;</span>
<span class="br0">}</span> <span class="co1">// &#22359;&#32467;&#26463;&#65292;&#31532;&#20108;&#20010; &#39;a&#39; &#30340;&#20316;&#29992;&#22495;&#32467;&#26463;</span>
<span class="co1">// &#31532;&#19968;&#20010; &#39;a&#39; &#30340;&#20316;&#29992;&#22495;&#24674;&#22797;</span>
<span class="br0">}</span> <span class="co1">// &#22359;&#32467;&#26463;&#65292;&#31532;&#19968;&#20010; &#39;a&#39; &#30340;&#20316;&#29992;&#22495;&#32467;&#26463;</span>
<span class="kw4">int</span> b <span class="sy1">=</span> a<span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306;&#21517;&#23383; &#39;a&#39; &#19981;&#22312;&#20316;&#29992;&#22495;&#20013;</span></pre></div>
</div>
<p>&#22768;&#26126;&#20110;&#24322;&#24120;&#22788;&#29702;&#22359;&#20013;&#30340;&#21517;&#23383;&#30340;&#28508;&#22312;&#20316;&#29992;&#22495;&#24320;&#22987;&#20110;&#20854;&#22768;&#26126;&#28857;&#65292;&#24182;&#22312;&#35813;&#24322;&#24120;&#22788;&#29702;&#22359;&#32467;&#26463;&#26102;&#32467;&#26463;&#65292;&#20854;&#20182;&#24322;&#24120;&#22788;&#29702;&#22359;&#21644;&#22806;&#22260;&#22359;&#22312;&#20316;&#29992;&#22495;&#20197;&#22806;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">try</span> <span class="br0">{</span>
f<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span> <span class="kw1">catch</span><span class="br0">(</span><span class="kw4">const</span> <a href="cpp-error-runtime_error.html"><span class="kw770">std::<span class="me2">runtime_error</span></span></a><span class="sy3">&amp;</span> re<span class="br0">)</span> <span class="br0">{</span> <span class="co1">// re &#30340;&#20316;&#29992;&#22495;&#24320;&#22987;</span>
<span class="kw4">int</span> n <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span> <span class="co1">// n &#30340;&#20316;&#29992;&#24320;&#22987;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> re.<span class="me1">what</span><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// re &#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="br0">}</span> <span class="co1">// re &#30340;&#20316;&#29992;&#22495;&#32467;&#26463;&#65292; n &#30340;&#20316;&#29992;&#22495;&#32467;&#26463;</span>
<span class="kw1">catch</span><span class="br0">(</span><a href="cpp-error-exception.html"><span class="kw764">std::<span class="me2">exception</span></span></a><span class="sy3">&amp;</span> e<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> re.<span class="me1">what</span><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306; re &#19981;&#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="sy2">++</span>n<span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306; n &#19981;&#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#22768;&#26126;&#20110; <a href="cpp-language-for.html">for &#24490;&#29615;</a>&#30340;<i>&#21021;&#22987;&#21270;&#35821;&#21477;</i>&#65292;<a href="cpp-language-for.html">for &#24490;&#29615;</a>&#30340;<i>&#26465;&#20214;</i>&#65292;<a href="cpp-language-range-for.html">&#33539;&#22260; for &#24490;&#29615;</a>&#30340;<i>&#33539;&#22260;&#22768;&#26126;</i>&#65292;<span class="t-rev-inl t-since-cxx17"><span><a href="cpp-language-if.html">if &#35821;&#21477;</a>&#25110; <a href="cpp-language-switch.html">switch &#35821;&#21477;</a>&#30340;<i>&#21021;&#22987;&#21270;&#35821;&#21477;</i>&#65292;</span> <span><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></span></span><a href="cpp-language-if.html">if &#35821;&#21477;</a>&#12289;<a href="cpp-language-while.html">while &#24490;&#29615;</a>&#25110; <a href="cpp-language-switch.html">switch &#35821;&#21477;</a>&#30340;<i>&#26465;&#20214;</i>&#20013;&#30340;&#21517;&#23383;&#30340;&#28508;&#22312;&#20316;&#29992;&#22495;&#24320;&#22987;&#20110;&#20854;&#22768;&#26126;&#28857;&#65292;&#24182;&#32467;&#26463;&#20110;&#30456;&#24212;&#25511;&#21046;&#35821;&#21477;&#30340;&#26411;&#23614;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1">Base<span class="sy2">*</span> bp <span class="sy1">=</span> new Derived<span class="sy4">;</span>
<span class="kw1">if</span><span class="br0">(</span>Derived<span class="sy2">*</span> dp <span class="sy1">=</span> <span class="kw1">dynamic_cast</span><span class="sy1">&lt;</span>Derived<span class="sy2">*</span><span class="sy1">&gt;</span><span class="br0">(</span>bp<span class="br0">)</span><span class="br0">)</span>
<span class="br0">{</span>
dp<span class="sy2">-</span><span class="sy1">&gt;</span>f<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// dp &#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="br0">}</span> <span class="co1">// dp &#30340;&#20316;&#29992;&#22495;&#32467;&#26463;</span>
<span class="kw1">for</span><span class="br0">(</span><span class="kw4">int</span> n <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span> <span class="co1">// n &#30340;&#20316;&#29992;&#22495;&#24320;&#22987;</span>
n <span class="sy1">&lt;</span> <span class="nu0">10</span><span class="sy4">;</span> <span class="co1">// n &#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="sy2">++</span>n<span class="br0">)</span> <span class="co1">// n &#22312;&#20316;&#29992;&#22495;&#20013;</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> n <span class="sy1">&lt;&lt;</span> <span class="st0">&#39; &#39;</span><span class="sy4">;</span> <span class="co1">// n &#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="br0">}</span> <span class="co1">// n &#30340;&#20316;&#29992;&#22495;&#32467;&#26463;</span></pre></div>
</div>
<p><span id=".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B.E4.BD.9C.E7.94.A8.E5.9F.9F"></span></p>
<h3><span class="mw-headline" id=".E5.87.BD.E6.95.B0.E5.BD.A2.E5.8F.82.E4.BD.9C.E7.94.A8.E5.9F.9F">&#20989;&#25968;&#24418;&#21442;&#20316;&#29992;&#22495;</span></h3>
<p>&#20989;&#25968;&#24418;&#21442;&#65288;&#21253;&#25324; <code>lambda</code> &#34920;&#36798;&#24335;&#30340;&#24418;&#21442;&#65289;&#25110;&#20989;&#25968;&#23616;&#37096;&#39044;&#23450;&#20041;&#21464;&#37327;&#30340;&#28508;&#22312;&#20316;&#29992;&#22495;&#24320;&#22987;&#20110;&#20854;&#22768;&#26126;&#28857;&#12290;</p>
<ul>
<li>&#33509;&#26368;&#20869;&#23618;&#30340;&#22806;&#22260;&#20989;&#25968;&#22768;&#26126;&#31526;&#19981;&#26159;&#20989;&#25968;&#23450;&#20041;&#30340;&#22768;&#26126;&#31526;&#65292;&#21017;&#20854;&#28508;&#22312;&#20316;&#29992;&#22495;&#32456;&#27490;&#20110;&#35813;&#20989;&#25968;&#22768;&#26126;&#31526;&#30340;&#32467;&#23614;&#12290;</li>
<li>&#21542;&#21017;&#65292;&#20854;&#28508;&#22312;&#20316;&#29992;&#22495;&#32456;&#27490;&#20110;<a href="cpp-language-function-try-block.html">&#20989;&#25968; try &#22359;</a>&#30340;&#26368;&#21518;&#24322;&#24120;&#22788;&#29702;&#22359;&#30340;&#26411;&#23614;&#65292;&#33509;&#19981;&#20351;&#29992;&#20989;&#25968; try &#22359;&#21017;&#20026;&#20989;&#25968;&#20307;&#30340;&#26411;&#23614;&#12290;</li>
</ul>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw4">const</span> <span class="kw4">int</span> n <span class="sy1">=</span> <span class="nu0">3</span><span class="sy4">;</span>
<span class="kw4">int</span> f1<span class="br0">(</span><span class="kw4">int</span> n, <span class="co1">// &#20840;&#23616; &#39;n&#39; &#30340;&#20316;&#29992;&#22495;&#38388;&#26029;</span>
<span class="co1">// &#24418;&#21442; &#39;n&#39; &#30340;&#20316;&#29992;&#22495;&#24320;&#22987;</span>
<span class="kw4">int</span> y <span class="sy1">=</span> n<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306;&#40664;&#35748;&#23454;&#21442;&#28041;&#25351;&#20102;&#24418;&#21442;</span>
<span class="kw4">int</span> <span class="br0">(</span><span class="sy2">*</span><span class="br0">(</span><span class="sy2">*</span>f2<span class="br0">)</span><span class="br0">(</span><span class="kw4">int</span> n<span class="br0">)</span><span class="br0">)</span><span class="br0">[</span>n<span class="br0">]</span><span class="sy4">;</span> <span class="co1">// OK &#65306;&#20989;&#25968;&#24418;&#21442; &#39;n&#39; &#30340;&#20316;&#29992;&#22495;&#32456;&#27490;&#20110;&#20854;&#20989;&#25968;&#22768;&#26126;&#31526;&#30340;&#26411;&#23614;</span>
<span class="co1">// &#22312;&#25968;&#32452;&#22768;&#26126;&#31526;&#20013;&#65292;&#20840;&#23616; n &#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="co1">// &#65288;&#36825;&#22768;&#26126;&#20102;&#19968;&#20010;&#36820;&#22238;&#65288;&#21547;&#26377; 3 &#20010; int &#20803;&#32032;&#30340;&#25968;&#32452;&#30340;&#25351;&#38024;&#65289;&#30340;&#20989;&#25968;&#30340;&#25351;&#38024;&#65289;</span>
<span class="co1">// &#30456;&#21453;</span>
<span class="kw4">auto</span> <span class="br0">(</span><span class="sy2">*</span>f3<span class="br0">)</span><span class="br0">(</span><span class="kw4">int</span> n<span class="br0">)</span><span class="sy2">-</span><span class="sy1">&gt;</span><span class="kw4">int</span> <span class="br0">(</span><span class="sy2">*</span><span class="br0">)</span><span class="br0">[</span>n<span class="br0">]</span><span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306;&#20197;&#24418;&#21442; &#39;n&#39; &#20026;&#25968;&#32452;&#36793;&#30028;</span>
<span class="kw4">int</span> f<span class="br0">(</span><span class="kw4">int</span> n <span class="sy1">=</span> <span class="nu0">2</span><span class="br0">)</span> <span class="co1">// &#39;n&#39; &#30340;&#20316;&#29992;&#22495;&#24320;&#22987;</span>
<span class="kw1">try</span> <span class="co1">// &#20989;&#25968; try &#22359;</span>
<span class="br0">{</span> <span class="co1">// &#20989;&#25968;&#20307;&#24320;&#22987;</span>
<span class="sy2">++</span>n<span class="sy4">;</span> <span class="co1">// &#39;n&#39; &#22312;&#20316;&#29992;&#22495;&#20013;&#24182;&#25351;&#20195;&#20989;&#25968;&#24418;&#21442;</span>
<span class="br0">{</span>
<span class="kw4">int</span> n <span class="sy1">=</span> <span class="nu0">2</span><span class="sy4">;</span> <span class="co1">// &#23616;&#37096;&#21464;&#37327; &#39;n&#39; &#30340;&#20316;&#29992;&#22495;&#24320;&#22987;</span>
<span class="co1">// &#20989;&#25968;&#24418;&#21442; &#39;n&#39; &#30340;&#20316;&#29992;&#22495;&#20013;&#26029;</span>
<span class="sy2">++</span>n<span class="sy4">;</span> <span class="co1">// &#39;n&#39; &#22312;&#27492;&#22359;&#20013;&#25351;&#20195;&#23616;&#37096;&#21464;&#37327;</span>
<span class="br0">}</span> <span class="co1">// &#23616;&#37096;&#21464;&#37327; &#39;n&#39; &#30340;&#20316;&#29992;&#22495;&#32467;&#26463;</span>
<span class="co1">// &#20989;&#25968;&#24418;&#21442; &#39;n&#39; &#30340;&#20316;&#29992;&#22495;&#24674;&#22797;</span>
<span class="br0">}</span> <span class="kw1">catch</span><span class="br0">(</span>...<span class="br0">)</span> <span class="br0">{</span>
<span class="sy2">++</span>n<span class="sy4">;</span> <span class="co1">// n &#22312;&#20316;&#29992;&#22495;&#20013;&#24182;&#25351;&#20195;&#20989;&#25968;&#24418;&#21442;</span>
<span class="kw1">throw</span><span class="sy4">;</span>
<span class="br0">}</span> <span class="co1">// &#26368;&#21518;&#24322;&#24120;&#22788;&#29702;&#22359;&#32467;&#26463;&#65292;&#20989;&#25968;&#24418;&#21442; &#39;n&#39; &#30340;&#20316;&#29992;&#22495;&#32467;&#26463;</span>
<span class="kw4">int</span> a <span class="sy1">=</span> n<span class="sy4">;</span> <span class="co1">// OK &#65306;&#20840;&#23616; &#39;n&#39; &#22312;&#20316;&#29992;&#22495;&#20013;</span></pre></div>
</div>
<h3><span class="mw-headline" id=".E5.87.BD.E6.95.B0.E4.BD.9C.E7.94.A8.E5.9F.9F">&#20989;&#25968;&#20316;&#29992;&#22495;</span></h3>
<p>&#22914;&#26524;&#19968;&#20010;<a href="cpp-language-statements.html#.E6.A0.87.E5.8F.B7">&#26631;&#21495;&#65288;&#19988;&#21482;&#26377;&#26631;&#21495;&#65289;</a>&#22312;&#19968;&#20010;&#20989;&#25968;&#20869;&#22768;&#26126;&#65292;&#21017;&#22312;&#35813;&#20989;&#25968;&#21644;&#20854;&#25152;&#26377;&#20869;&#23884;&#20195;&#30721;&#22359;&#30340;&#20219;&#20309;&#20301;&#32622;&#65292;&#26080;&#35770;&#22312;&#20854;&#33258;&#36523;&#22768;&#26126;&#30340;&#21069;&#21518;&#65292;&#35813;&#26631;&#21495;&#37117;&#22312;&#20316;&#29992;&#22495;&#20013;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw4">void</span> f<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
<span class="br0">{</span>
<span class="kw1">goto</span> label<span class="sy4">;</span> <span class="co1">// label &#22312;&#20316;&#29992;&#22495;&#20013;&#65292;&#23613;&#31649;&#20043;&#21518;&#25165;&#22768;&#26126;</span>
label<span class="sy4">:;</span>
<span class="br0">}</span>
<span class="kw1">goto</span> label<span class="sy4">;</span> <span class="co1">// label &#24573;&#30053;&#22359;&#20316;&#29992;&#22495;</span>
<span class="br0">}</span>
<span class="kw4">void</span> g<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
<span class="kw1">goto</span> label<span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306; g() &#20013; label &#19981;&#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="br0">}</span></pre></div>
</div>
<h3><span class="mw-headline" id=".E5.91.BD.E5.90.8D.E7.A9.BA.E9.97.B4.E4.BD.9C.E7.94.A8.E5.9F.9F">&#21629;&#21517;&#31354;&#38388;&#20316;&#29992;&#22495;</span></h3>
<p><a href="cpp-language-namespace.html">&#21629;&#21517;&#31354;&#38388;</a>&#20013;&#22768;&#26126;&#30340;&#20219;&#20309;&#23454;&#20307;&#30340;&#28508;&#22312;&#20316;&#29992;&#22495;&#22343;&#24320;&#22987;&#20110;&#20854;&#22768;&#26126;&#65292;&#24182;&#30001;&#20854;&#21518;&#30340;&#21516;&#19968;&#21629;&#21517;&#31354;&#38388;&#21517;&#30340;&#25152;&#26377;&#21629;&#21517;&#31354;&#38388;&#23450;&#20041;&#25340;&#21512;&#36215;&#26469;&#65292;&#20877;&#21152;&#19978;&#23545;&#20110;&#23558;&#36825;&#20010;&#21517;&#23383;&#25110;&#20854;&#25972;&#20010;&#21629;&#21517;&#31354;&#38388;&#24341;&#20837;&#21040;&#20854;&#20182;&#20316;&#29992;&#22495;&#30340;&#27599;&#20010; <a href="cpp-language-namespace.html">using &#25351;&#20196;</a>&#26469;&#35828;&#65292;&#21253;&#25324;&#36825;&#20010;&#20316;&#29992;&#22495;&#30340;&#21097;&#20313;&#37096;&#20998;&#12290;</p>
<p>&#32763;&#35793;&#21333;&#20803;&#30340;&#39030;&#23618;&#20316;&#29992;&#22495;&#65288;&ldquo;&#25991;&#20214;&#20316;&#29992;&#22495;&rdquo;&#25110;&ldquo;&#20840;&#23616;&#20316;&#29992;&#22495;&rdquo;&#65289;&#20134;&#20026;&#21629;&#21517;&#31354;&#38388;&#65292;&#19988;&#34987;&#27491;&#24335;&#31216;&#20316;&ldquo;&#20840;&#23616;&#21629;&#21517;&#31354;&#38388;&#20316;&#29992;&#22495;&rdquo;&#12290;&#20219;&#20309;&#22768;&#26126;&#20110;&#20840;&#23616;&#21629;&#21517;&#31354;&#38388;&#20316;&#29992;&#22495;&#30340;&#23454;&#20307;&#30340;&#28508;&#22312;&#20316;&#29992;&#22495;&#22343;&#24320;&#22987;&#20110;&#20854;&#22768;&#26126;&#65292;&#24182;&#25345;&#32493;&#21040;&#32763;&#35793;&#21333;&#20803;&#30340;&#32467;&#23614;&#12290;</p>
<p>&#22768;&#26126;&#20110;&#26080;&#21517;&#21629;&#21517;&#31354;&#38388;&#25110;&#20869;&#32852;&#21629;&#21517;&#31354;&#38388;&#30340;&#23454;&#20307;&#30340;&#20316;&#29992;&#22495;&#21253;&#25324;&#22806;&#22260;&#21629;&#21517;&#31354;&#38388;&#65307;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">namespace</span> N <span class="br0">{</span> <span class="co1">// N &#30340;&#20316;&#29992;&#22495;&#24320;&#22987;&#65288;&#20316;&#20026;&#20840;&#23616;&#21629;&#21517;&#31354;&#38388;&#30340;&#25104;&#21592;&#65289;</span>
<span class="kw4">int</span> i<span class="sy4">;</span> <span class="co1">// i &#30340;&#20316;&#29992;&#22495;&#24320;&#22987;</span>
<span class="kw4">int</span> g<span class="br0">(</span><span class="kw4">int</span> a<span class="br0">)</span> <span class="br0">{</span> <span class="kw1">return</span> a<span class="sy4">;</span> <span class="br0">}</span> <span class="co1">// g &#30340;&#20316;&#29992;&#22495;&#24320;&#22987;</span>
<span class="kw4">int</span> j<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// j &#30340;&#20316;&#29992;&#22495;&#24320;&#22987;</span>
<span class="kw4">void</span> q<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// q &#30340;&#20316;&#29992;&#22495;&#24320;&#22987;</span>
<span class="kw1">namespace</span> <span class="br0">{</span>
<span class="kw4">int</span> x<span class="sy4">;</span> <span class="co1">// x &#30340;&#20316;&#29992;&#22495;&#24320;&#22987;</span>
<span class="br0">}</span> <span class="co1">// x &#30340;&#20316;&#29992;&#22495;&#19981;&#32467;&#26463;</span>
<span class="kw1">inline</span> <span class="kw1">namespace</span> inl <span class="br0">{</span> <span class="co1">// inl &#30340;&#20316;&#29992;&#22495;&#24320;&#22987;</span>
<span class="kw4">int</span> y<span class="sy4">;</span> <span class="co1">// y &#30340;&#20316;&#29992;&#22495;&#24320;&#22987;</span>
<span class="br0">}</span> <span class="co1">// y &#30340;&#20316;&#29992;&#22495;&#19981;&#32467;&#26463;</span>
<span class="br0">}</span> <span class="co1">// i&#12289;g&#12289;j&#12289;q&#12289;inl&#12289;x&#12289;y &#30340;&#20316;&#29992;&#22495;&#38388;&#26029;</span>
<span class="kw1">namespace</span> <span class="br0">{</span>
<span class="kw4">int</span> l<span class="sy1">=</span><span class="nu0">1</span><span class="sy4">;</span> <span class="co1">// l &#30340;&#20316;&#29992;&#22495;&#24320;&#22987;</span>
<span class="br0">}</span> <span class="co1">// l &#30340;&#20316;&#29992;&#22495;&#19981;&#32467;&#26463;&#65288;&#23427;&#26159;&#26080;&#21517;&#21629;&#21517;&#31354;&#38388;&#30340;&#25104;&#21592;&#65289;</span>
<span class="kw1">namespace</span> N <span class="br0">{</span> <span class="co1">// i&#12289;g&#12289;j&#12289;q&#12289;inl&#12289;x&#12289;y &#30340;&#20316;&#29992;&#22495;&#32487;&#32493;</span>
<span class="kw4">int</span> g<span class="br0">(</span><span class="kw4">char</span> a<span class="br0">)</span> <span class="br0">{</span> <span class="co1">// &#37325;&#36733; N::g(int)</span>
<span class="kw1">return</span> l<span class="sy2">+</span>a<span class="sy4">;</span> <span class="co1">// &#26469;&#33258;&#26080;&#21517;&#21629;&#21517;&#31354;&#38388;&#30340; l &#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="br0">}</span>
<span class="co1">// int i; // &#38169;&#35823;&#65306;&#37325;&#22797;&#23450;&#20041;&#65288; i &#24050;&#22312;&#20316;&#29992;&#22495;&#20013;&#65289;</span>
<span class="kw4">int</span> j<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// OK &#65306;&#20801;&#35768;&#37325;&#22797;&#30340;&#20989;&#25968;&#22768;&#26126;</span>
<span class="kw4">int</span> j<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="co1">// OK &#65306;&#23450;&#20041;&#20808;&#21069;&#22768;&#26126;&#30340; N::j()</span>
<span class="kw1">return</span> g<span class="br0">(</span>i<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; N::g(int)</span>
<span class="br0">}</span>
<span class="kw4">int</span> q<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306; q &#24050;&#22312;&#20316;&#29992;&#22495;&#20013;&#24182;&#26377;&#19981;&#21516;&#30340;&#36820;&#22238;&#31867;&#22411;</span>
<span class="br0">}</span> <span class="co1">// i&#12289;g&#12289;j&#12289;q&#12289;inl&#12289;x&#12289;y &#30340;&#20316;&#29992;&#22495;&#38388;&#26029;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw1">using</span> <span class="kw1">namespace</span> N<span class="sy4">;</span> <span class="co1">// i&#12289;g&#12289;j&#12289;q&#12289;inl&#12289;x&#12289;y &#30340;&#20316;&#29992;&#22495;&#24674;&#22797;</span>
i <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span> <span class="co1">// N::i &#22312;&#20316;&#29992;&#22495;&#20013;</span>
x <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span> <span class="co1">// N::(&#21311;&#21517;)::x &#22312;&#20316;&#29992;&#22495;&#20013;</span>
y <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span> <span class="co1">// N::inl::y &#22312;&#20316;&#29992;&#22495;&#20013;</span>
inl<span class="sy4">::</span><span class="me2">y</span> <span class="sy1">=</span> <span class="nu0">2</span><span class="sy4">;</span> <span class="co1">// N::inl &#20063;&#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="br0">}</span> <span class="co1">// i&#12289;g&#12289;j&#12289;q&#12289;inl&#12289;x&#12289;y &#30340;&#20316;&#29992;&#22495;&#38388;&#26029;</span></pre></div>
</div>
<h3><span class="mw-headline" id=".E7.B1.BB.E4.BD.9C.E7.94.A8.E5.9F.9F">&#31867;&#20316;&#29992;&#22495;</span></h3>
<p><a href="cpp-language-class.html">&#31867;</a>&#20013;&#22768;&#26126;&#30340;&#21517;&#23383;&#30340;&#28508;&#22312;&#20316;&#29992;&#22495;&#24320;&#22987;&#20110;&#20854;&#22768;&#26126;&#28857;&#65292;&#24182;&#21253;&#21547;&#31867;&#20307;&#30340;&#21097;&#20313;&#37096;&#20998;&#21644;&#25152;&#26377;&#20989;&#25968;&#20307;&#65288;&#26080;&#35770;&#26159;&#21542;&#23450;&#20041;&#20110;&#31867;&#23450;&#20041;&#22806;&#25110;&#22312;&#35813;&#21517;&#23383;&#30340;&#22768;&#26126;&#20043;&#21069;&#65289;&#12289;&#40664;&#35748;&#23454;&#21442;&#12289;&#24322;&#24120;&#35268;&#23450;&#12289;&#31867;&#20869;&#33457;&#25324;&#21495;&#25110;&#31561;&#21495;&#21021;&#22987;&#21270;&#22120;&#65292;&#36824;&#36882;&#24402;&#22320;&#21253;&#25324;&#23884;&#22871;&#31867;&#20013;&#30340;&#25152;&#26377;&#36825;&#20123;&#20869;&#23481;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">class</span> X <span class="br0">{</span>
<span class="kw4">int</span> f<span class="br0">(</span><span class="kw4">int</span> a <span class="sy1">=</span> n<span class="br0">)</span> <span class="br0">{</span> <span class="co1">// &#40664;&#35748;&#23454;&#21442;&#20869;&#30340; X::n &#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="kw1">return</span> a<span class="sy2">*</span>n<span class="sy4">;</span> <span class="co1">// &#20989;&#25968;&#20307;&#20869;&#30340; X::n &#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="br0">}</span>
<span class="kw1">using</span> r <span class="sy1">=</span> <span class="kw4">int</span><span class="sy4">;</span>
r g<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw4">int</span> i <span class="sy1">=</span> n<span class="sy2">*</span><span class="nu0">2</span><span class="sy4">;</span> <span class="co1">// &#21021;&#22987;&#21270;&#22120;&#20869;&#30340; X::n &#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="co1">// int x[n]; // &#38169;&#35823;&#65306;&#31867;&#20307;&#20869;&#30340; X::n &#19981;&#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="kw4">static</span> <span class="kw4">const</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> x<span class="br0">[</span>n<span class="br0">]</span><span class="sy4">;</span> <span class="co1">// OK &#65306; &#31867;&#20307;&#20869;&#30340; X::n &#29616;&#22312;&#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="co1">//r X::g() { // &#38169;&#35823;&#65306;&#31867;&#22806;&#25104;&#21592;&#20989;&#25968;&#20869;&#30340; r &#19981;&#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="kw4">auto</span> X<span class="sy4">::</span><span class="me2">g</span><span class="br0">(</span><span class="br0">)</span><span class="sy2">-</span><span class="sy1">&gt;</span>r <span class="br0">{</span> <span class="co1">// OK &#65306;&#23614;&#38543;&#36820;&#22238;&#31867;&#22411;&#20869;&#30340; X::r &#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="kw1">return</span> n<span class="sy4">;</span> <span class="co1">// &#31867;&#22806;&#25104;&#21592;&#20989;&#25968;&#20307;&#20869;&#30340; X::n &#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#22914;&#26524;&#19968;&#20010;&#21517;&#23383;&#22312;&#34987;&#22768;&#26126;&#21069;&#24050;&#32463;&#22312;&#31867;&#20307;&#20013;&#34987;&#20351;&#29992;&#65292;&#32780;&#35813;&#21517;&#23383;&#30340;&#21478;&#19968;&#22768;&#26126;&#22312;&#20316;&#29992;&#22495;&#20013;&#65292;&#21017;&#31243;&#24207;<a href="cpp-language-ub.html">&#38750;&#33391;&#26500;&#65292;&#19981;&#35201;&#27714;&#35786;&#26029;</a>&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">typedef</span> <span class="kw4">int</span> c<span class="sy4">;</span> <span class="co1">// ::c</span>
<span class="kw2">enum</span> <span class="br0">{</span> i <span class="sy1">=</span> <span class="nu0">1</span> <span class="br0">}</span><span class="sy4">;</span> <span class="co1">// ::i</span>
<span class="kw1">class</span> X <span class="br0">{</span>
<span class="kw4">char</span> v<span class="br0">[</span>i<span class="br0">]</span><span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306;&#27492;&#22788; i &#25351;&#20195; ::i&#65292;&#20294; X::i &#20063;&#23384;&#22312;</span>
<span class="kw4">int</span> f<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw1">return</span> sizeof<span class="br0">(</span>c<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// OK &#65306;&#25104;&#21592;&#20989;&#25968;&#20307;&#20869;&#22312;&#20316;&#29992;&#22495;&#20013;&#30340;&#26159; X::c &#32780;&#38750; ::c</span>
<span class="br0">}</span>
<span class="kw4">char</span> c<span class="sy4">;</span> <span class="co1">// X::c</span>
<span class="kw2">enum</span> <span class="br0">{</span> i <span class="sy1">=</span> <span class="nu0">2</span> <span class="br0">}</span><span class="sy4">;</span> <span class="co1">// X::i</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">typedef</span> <span class="kw4">char</span><span class="sy2">*</span> T<span class="sy4">;</span>
<span class="kw1">struct</span> Y <span class="br0">{</span>
T a<span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306;&#27492;&#22788;&#65292;T &#25351;&#20195; ::T&#65292;&#20294; Y::T &#20063;&#23384;&#22312;</span>
<span class="kw1">typedef</span> <span class="kw4">long</span> T<span class="sy4">;</span>
T b<span class="sy4">;</span>
<span class="br0">}</span><span class="sy4">;</span></pre></div>
</div>
<p>&#20219;&#20309;&#31867;&#25104;&#21592;&#21517;&#21482;&#33021;&#29992;&#20110;&#22235;&#31181;&#35821;&#22659;&#20013;&#65306;</p>
<ul>
<li>&#22312;&#20854;&#33258;&#36523;&#30340;&#31867;&#20316;&#29992;&#22495;&#25110;&#22312;&#27966;&#29983;&#31867;&#30340;&#31867;&#20316;&#29992;&#22495;&#20043;&#20013;</li>
<li>&#22312;&#23545;&#20854;&#31867;&#25110;&#20854;&#27966;&#29983;&#31867;&#30340;&#31867;&#22411;&#30340;&#34920;&#36798;&#24335;&#36816;&#29992; <code><b>.</b></code> &#36816;&#31639;&#31526;&#20043;&#21518;</li>
<li>&#22312;&#23545;&#20854;&#31867;&#25110;&#20854;&#27966;&#29983;&#30340;&#31867;&#30340;&#25351;&#38024;&#31867;&#22411;&#30340;&#34920;&#36798;&#24335;&#36816;&#29992; <code><b>-&gt;</b></code> &#36816;&#31639;&#31526;&#20043;&#21518;</li>
<li>&#22312;&#23545;&#20854;&#31867;&#25110;&#20854;&#27966;&#29983;&#31867;&#30340;&#21517;&#23383;&#36816;&#29992; <code><b>::</b></code> &#36816;&#31639;&#31526;&#20043;&#21518;</li>
</ul>
<h3><span class="mw-headline" id=".E6.9E.9A.E4.B8.BE.E4.BD.9C.E7.94.A8.E5.9F.9F">&#26522;&#20030;&#20316;&#29992;&#22495;</span></h3>
<p><a href="cpp-language-enum.html">&#26377;&#20316;&#29992;&#22495;&#26522;&#20030;</a>&#20013;&#24341;&#20837;&#30340;&#26522;&#20030;&#39033;&#30340;&#21517;&#23383;&#30340;&#20316;&#29992;&#22495;&#24320;&#22987;&#20110;&#20854;&#22768;&#26126;&#28857;&#65292;&#24182;&#32456;&#27490;&#20110; enum &#35828;&#26126;&#31526;&#30340;&#26411;&#23614;&#65288;&#19982;&#20043;&#30456;&#21453;&#65292;&#26080;&#20316;&#29992;&#22495;&#26522;&#20030;&#39033;&#22312; enum &#35828;&#26126;&#31526;&#30340;&#32467;&#26463;&#21518;&#20173;&#22312;&#20316;&#29992;&#22495;&#20013;&#65289;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw2">enum</span> e1_t <span class="br0">{</span> <span class="co1">// &#26080;&#20316;&#29992;&#22495;&#26522;&#20030;</span>
A,
B <span class="sy1">=</span> A<span class="sy2">*</span><span class="nu0">2</span>
<span class="br0">}</span><span class="sy4">;</span> <span class="co1">// A &#19982; B &#30340;&#20316;&#29992;&#22495;&#19981;&#32467;&#26463;</span>
<span class="kw2">enum</span> <span class="kw1">class</span> e2_t <span class="br0">{</span> <span class="co1">// &#26377;&#20316;&#29992;&#22495;&#26522;&#20030;</span>
SA,
SB <span class="sy1">=</span> SA<span class="sy2">*</span><span class="nu0">2</span> <span class="co1">// SA &#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="br0">}</span><span class="sy4">;</span> <span class="co1">// SA &#19982; SB &#30340;&#20316;&#29992;&#22495;&#32467;&#26463;</span>
e1_t e1 <span class="sy1">=</span> B<span class="sy4">;</span> <span class="co1">// OK &#65306; B &#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="co1">// e2_t e2 = SB; // &#38169;&#35823;&#65306; SB &#19981;&#22312;&#20316;&#29992;&#22495;&#20013;</span>
e2_t e2 <span class="sy1">=</span> e2_t<span class="sy4">::</span><span class="me2">SB</span><span class="sy4">;</span> <span class="co1">// OK</span></pre></div>
</div>
<h3><span class="mw-headline" id=".E6.A8.A1.E6.9D.BF.E5.BD.A2.E5.8F.82.E4.BD.9C.E7.94.A8.E5.9F.9F">&#27169;&#26495;&#24418;&#21442;&#20316;&#29992;&#22495;</span></h3>
<p>&#27169;&#26495;&#24418;&#21442;&#21517;&#30340;&#28508;&#22312;&#20316;&#29992;&#22495;&#30452;&#25509;&#24320;&#22987;&#20110;&#20854;&#22768;&#26126;&#28857;&#65292;&#24182;&#25345;&#32493;&#21040;&#20110;&#20854;&#20013;&#24341;&#20837;&#20102;&#23427;&#30340;&#26368;&#23567;&#27169;&#26495;&#22768;&#26126;&#30340;&#26411;&#23614;&#12290;&#20855;&#20307;&#32780;&#35328;&#65292;&#27169;&#26495;&#24418;&#21442;&#33021;&#29992;&#20110;&#20854;&#21518;&#30340;&#27169;&#26495;&#24418;&#21442;&#30340;&#22768;&#26126;&#21450;&#22522;&#31867;&#30340;&#25351;&#23450;&#65292;&#20294;&#19981;&#33021;&#29992;&#20110;&#20854;&#21069;&#30340;&#27169;&#26495;&#24418;&#21442;&#30340;&#22768;&#26126;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span> <span class="kw1">typename</span> T, <span class="co1">// T &#30340;&#20316;&#29992;&#22495;&#24320;&#22987;</span>
T<span class="sy2">*</span> p, <span class="co1">// T &#33021;&#29992;&#20110;&#38750;&#31867;&#22411;&#24418;&#21442;</span>
<span class="kw1">class</span> U <span class="sy1">=</span> T <span class="co1">// T &#33021;&#29992;&#20316;&#40664;&#35748;&#31867;&#22411;</span>
<span class="sy1">&gt;</span>
<span class="kw1">class</span> X <span class="sy4">:</span> <span class="kw1">public</span> Array<span class="sy1">&lt;</span>T<span class="sy1">&gt;</span> <span class="co1">// T &#33021;&#29992;&#20110;&#22522;&#31867;&#21517;</span>
<span class="br0">{</span>
<span class="co1">// T &#36824;&#33021;&#22312;&#20307;&#20869;&#20351;&#29992;</span>
<span class="br0">}</span><span class="sy4">;</span> <span class="co1">// T &#19982; U &#30340;&#20316;&#29992;&#22495;&#32467;&#26463;&#65292; X &#30340;&#20316;&#29992;&#22495;&#25345;&#32493;</span></pre></div>
</div>
<p>&#27169;&#26495;&#27169;&#26495;&#24418;&#21442;&#30340;&#24418;&#21442;&#21517;&#30340;&#28508;&#22312;&#20316;&#29992;&#22495;&#65292;&#26159;&#35813;&#21517;&#23383;&#20986;&#29616;&#20110;&#20854;&#20013;&#30340;&#26368;&#23567;&#27169;&#26495;&#24418;&#21442;&#21015;&#34920;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span> <span class="kw1">template</span><span class="sy1">&lt;</span> <span class="co1">// &#27169;&#26495;&#27169;&#26495;&#24418;&#21442;</span>
<span class="kw1">typename</span> Y, <span class="co1">// Y &#30340;&#20316;&#29992;&#22495;&#24320;&#22987;</span>
<span class="kw1">typename</span> G <span class="sy1">=</span> Y <span class="co1">// Y &#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="sy1">&gt;</span> <span class="co1">// Y &#19982; G &#30340;&#20316;&#29992;&#22495;&#32467;&#26463;</span>
<span class="kw1">class</span> T,
<span class="co1">// typename U = Y // &#38169;&#35823;&#65306; Y &#19981;&#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="kw1">typename</span> U
<span class="sy1">&gt;</span>
<span class="kw1">class</span> X
<span class="br0">{</span>
<span class="br0">}</span><span class="sy4">;</span> <span class="co1">// T &#19982; U &#30340;&#20316;&#29992;&#22495;&#32467;&#26463;</span></pre></div>
</div>
<p>&#19982;&#20854;&#20182;&#23884;&#22871;&#20316;&#29992;&#22495;&#31867;&#20284;&#65292;&#27169;&#26495;&#24418;&#21442;&#21517;&#22312;&#20854;&#33258;&#36523;&#30340;&#25345;&#32493;&#26399;&#38388;&#38544;&#34255;&#26469;&#33258;&#22806;&#23618;&#20316;&#29992;&#22495;&#30340;&#30456;&#21516;&#21517;&#23383;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">typedef</span> <span class="kw4">int</span> N<span class="sy4">;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span> N X, <span class="co1">// int &#31867;&#22411;&#30340;&#38750;&#31867;&#22411;&#27169;&#26495;&#24418;&#21442;</span>
<span class="kw1">typename</span> N, <span class="co1">// &#27492; N &#30340;&#20316;&#29992;&#22495;&#24320;&#22987;&#65292;::N &#30340;&#20316;&#29992;&#22495;&#20013;&#26029;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span>N Y<span class="sy1">&gt;</span> <span class="kw1">class</span> T <span class="co1">// &#27492;&#22788;&#30340; N &#26159;&#27169;&#26495;&#24418;&#21442;&#65292;&#38750; int</span>
<span class="sy1">&gt;</span> <span class="kw1">struct</span> A<span class="sy4">;</span></pre></div>
</div>
<h3><span class="mw-headline" id=".E5.A3.B0.E6.98.8E.E7.82.B9">&#22768;&#26126;&#28857;</span></h3>
<p>&#20316;&#29992;&#22495;&#22987;&#20110;<i>&#22768;&#26126;&#28857;</i>&#65292;&#23427;&#23450;&#20301;&#22914;&#19979;&#65306;</p>
<p>&#23545;&#20110;&#31616;&#21333;&#22768;&#26126;&#25152;&#24341;&#20837;&#30340;&#21464;&#37327;&#21644;&#20854;&#20182;&#21517;&#23383;&#65292;&#22768;&#26126;&#28857;&#32039;&#38543;&#35813;&#21517;&#23383;&#30340;<a href="cpp-language-declarations.html#.E5.A3.B0.E6.98.8E.E7.AC.A6">&#22768;&#26126;&#31526;</a>&#20043;&#21518;&#65292;&#19988;&#22312;&#20854;&#21021;&#22987;&#21270;&#22120;&#20043;&#21069;&#65288;&#33509;&#20854;&#23384;&#22312;&#65289;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw4">unsigned</span> <span class="kw4">char</span> x <span class="sy1">=</span> <span class="nu0">32</span><span class="sy4">;</span> <span class="co1">// &#31532;&#19968;&#20010; &#39;x&#39; &#30340;&#20316;&#29992;&#22495;&#24320;&#22987;</span>
<span class="br0">{</span>
<span class="kw4">unsigned</span> <span class="kw4">char</span> x <span class="sy1">=</span> x<span class="sy4">;</span> <span class="co1">// &#31532;&#20108;&#20010; &#39;x&#39; &#30340;&#20316;&#29992;&#22495;&#22312;&#21021;&#22987;&#21270;&#22120;&#65288;= x&#65289;&#21069;&#24320;&#22987;</span>
<span class="co1">// &#36825;&#23548;&#33268;&#31532;&#20108;&#20010; &#39;x&#39; &#19981;&#20197;&#20540; 32 &#21021;&#22987;&#21270;&#65292;</span>
<span class="co1">// &#32780;&#26159;&#20197;&#20854;&#33258;&#36523;&#30340;&#19981;&#30830;&#23450;&#20540;&#21021;&#22987;&#21270;</span>
<span class="br0">}</span>
<a href="cpp-utility-functional-function.html"><span class="kw1059">std::<span class="me2">function</span></span></a><span class="sy1">&lt;</span><span class="kw4">int</span><span class="br0">(</span><span class="kw4">int</span><span class="br0">)</span><span class="sy1">&gt;</span> f <span class="sy1">=</span> <span class="br0">[</span><span class="sy3">&amp;</span><span class="br0">]</span><span class="br0">(</span><span class="kw4">int</span> n<span class="br0">)</span><span class="br0">{</span><span class="kw1">return</span> n<span class="sy1">&gt;</span><span class="nu0">1</span> <span class="sy4">?</span> n<span class="sy2">*</span>f<span class="br0">(</span>n<span class="sy2">-</span><span class="nu0">1</span><span class="br0">)</span> <span class="sy4">:</span> n<span class="sy4">;</span><span class="br0">}</span><span class="sy4">;</span>
<span class="co1">// lambda &#20869;&#30340;&#20989;&#25968;&#23545;&#35937;&#21517; &#39;f&#39; &#22312;&#20316;&#29992;&#22495;&#20013;&#65292;</span>
<span class="co1">// &#32780;&#19988;&#33021;&#27491;&#30830;&#22320;&#34987;&#25353;&#24341;&#29992;&#20440;&#33719;&#65292;&#32473;&#20986;&#36882;&#24402;&#20989;&#25968;</span></pre></div>
</div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw4">const</span> <span class="kw4">int</span> x <span class="sy1">=</span> <span class="nu0">2</span><span class="sy4">;</span> <span class="co1">// &#31532;&#19968;&#20010; &#39;x&#39; &#30340;&#20316;&#29992;&#22495;&#24320;&#22987;</span>
<span class="br0">{</span>
<span class="kw4">int</span> x<span class="br0">[</span>x<span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span> <span class="co1">// &#31532;&#20108;&#20010; x &#30340;&#20316;&#29992;&#22495;&#22312;&#21021;&#22987;&#21270;&#22120;&#65288;= {}&#65289;&#21069;&#65292;&#20294;&#22312;&#22768;&#26126;&#22120;&#65288;x[x]&#65289;&#21518;&#24320;&#22987;&#12290;</span>
<span class="co1">// &#22312;&#22768;&#26126;&#22120;&#20869;&#65292;&#22806;&#23618; &#39;x&#39; &#20173;&#22312;&#20316;&#29992;&#22495;&#20013;&#65292;&#36825;&#22768;&#26126;&#20102;&#19968;&#20010;&#21547;&#26377; 2 &#20010; int &#20803;&#32032;&#30340;&#25968;&#32452;&#12290;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#31867;&#25110;&#31867;&#27169;&#26495;&#30340;&#22768;&#26126;&#28857;&#32039;&#38543;&#20854;<a href="cpp-language-classes.html">&#31867;&#22836;</a>&#20013;&#25152;&#20986;&#29616;&#30340;&#21629;&#21517;&#35813;&#31867;&#30340;&#26631;&#35782;&#31526;&#65288;&#25110;&#21629;&#21517;&#35813;&#27169;&#26495;&#29305;&#21270;&#30340; <a href="cpp-language-templates.html#template-id">&#27169;&#26495;&#26631;&#35782;</a>&#65289;&#20043;&#21518;&#65292;&#24182;&#19988;&#22312;&#22522;&#31867;&#21015;&#34920;&#20869;&#24050;&#22788;&#20110;&#20316;&#29992;&#22495;&#20013;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co1">// &#21517;&#31216; &#39;S&#39; &#22312;&#20854;&#20986;&#29616;&#21518;&#31435;&#21363;&#22788;&#20110;&#20316;&#29992;&#22495;&#20013;&#65292;</span>
<span class="co1">// &#25925;&#23427;&#33021;&#29992;&#20110;&#22522;&#31867;&#21015;&#34920;</span>
<span class="kw1">struct</span> S<span class="sy4">:</span> <a href="cpp-memory-enable_shared_from_this.html"><span class="kw744">std::<span class="me2">enable_shared_from_this</span></span></a><span class="sy1">&lt;</span>S<span class="sy1">&gt;</span>
<span class="br0">{</span>
<span class="br0">}</span><span class="sy4">;</span></pre></div>
</div>
<p>&#26522;&#20030;&#30340;&#22768;&#26126;&#28857;&#32039;&#38543; <a href="cpp-language-enum.html">enum &#35828;&#26126;&#31526;</a>&#25110;&#31548;&#32479;&#26522;&#20030;&#22768;&#26126;&#65288;&#21462;&#20915;&#20110;&#20808;&#20351;&#29992;&#32773;&#65289;&#20013;&#25152;&#20986;&#29616;&#30340;&#21629;&#21517;&#23427;&#30340;&#26631;&#35782;&#31526;&#20043;&#21518;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw2">enum</span> E <span class="sy4">:</span> <span class="kw4">int</span> <span class="br0">{</span> <span class="co1">// E &#24050;&#22312;&#20316;&#29992;&#22495;&#20013;</span>
A <span class="sy1">=</span> sizeof<span class="br0">(</span>E<span class="br0">)</span>
<span class="br0">}</span><span class="sy4">;</span></pre></div>
</div>
<p><a href="cpp-language-type_alias.html">&#31867;&#22411;&#21035;&#21517;&#25110;&#21035;&#21517;&#27169;&#26495;</a>&#30340;&#22768;&#26126;&#28857;&#32039;&#38543;&#35813;&#21035;&#21517;&#25152;&#20195;&#34920;&#30340;&#31867;&#22411;&#26631;&#35782;&#20043;&#21518;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">using</span> T <span class="sy1">=</span> <span class="kw4">int</span><span class="sy4">;</span> <span class="co1">// T &#30340;&#22768;&#26126;&#28857;&#22312;&#20998;&#21495;&#22788;</span>
<span class="kw1">using</span> T <span class="sy1">=</span> T<span class="sy4">;</span> <span class="co1">// &#21516; T = int</span></pre></div>
</div>
<p>&#26522;&#20030;&#39033;&#30340;&#22768;&#26126;&#28857;&#32039;&#38543;&#20854;&#23450;&#20041;&#20043;&#21518;&#65288;&#32780;&#38750;&#22312;&#21021;&#22987;&#21270;&#22120;&#20043;&#21069;&#65292;&#36825;&#28857;&#19981;&#21516;&#20110;&#21464;&#37327;&#65289;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw4">const</span> <span class="kw4">int</span> x <span class="sy1">=</span> <span class="nu0">12</span><span class="sy4">;</span>
<span class="br0">{</span>
<span class="kw2">enum</span> <span class="br0">{</span>
x <span class="sy1">=</span> x <span class="sy2">+</span> <span class="nu0">1</span>, <span class="co1">// &#22768;&#26126;&#28857;&#22312;&#36887;&#21495;&#22788;&#65292;x &#21021;&#22987;&#21270;&#20026; 13</span>
y <span class="sy1">=</span> x <span class="sy2">+</span> <span class="nu0">1</span> <span class="co1">// &#26522;&#20030;&#39033; x &#22312;&#20316;&#29992;&#22495;&#20013;&#65292;y &#21021;&#22987;&#21270;&#20026; 14</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#19981;&#25351;&#21517;&#26500;&#36896;&#20989;&#25968;&#30340;<a href="cpp-language-using_declaration.html">using &#22768;&#26126;</a>&#20869;&#30340;&#22768;&#26126;&#31526;&#30340;&#22768;&#26126;&#28857;&#32039;&#38543;&#35813;&#22768;&#26126;&#31526;&#20043;&#21518;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw4">int</span> N<span class="sy1">&gt;</span>
<span class="kw1">class</span> base <span class="br0">{</span>
<span class="kw1">protected</span><span class="sy4">:</span>
<span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">int</span> next <span class="sy1">=</span> N <span class="sy2">+</span> <span class="nu0">1</span><span class="sy4">;</span>
<span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">int</span> value <span class="sy1">=</span> N<span class="sy4">;</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> derived <span class="sy4">:</span> base<span class="sy1">&lt;</span><span class="nu0">0</span><span class="sy1">&gt;</span>, base<span class="sy1">&lt;</span><span class="nu0">1</span><span class="sy1">&gt;</span>, base<span class="sy1">&lt;</span><span class="nu0">2</span><span class="sy1">&gt;</span> <span class="br0">{</span>
<span class="kw1">using</span> base<span class="sy1">&lt;</span><span class="nu0">0</span><span class="sy1">&gt;</span><span class="sy4">::</span><span class="me2">next</span>, <span class="co1">// next &#29616;&#22312;&#22312;&#20316;&#29992;&#22495;&#20013;</span>
base<span class="sy1">&lt;</span>next<span class="sy1">&gt;</span><span class="sy4">::</span><span class="me2">value</span><span class="sy4">;</span> <span class="co1">// derived::value &#20026; 1</span>
<span class="br0">}</span><span class="sy4">;</span></pre></div>
</div>
<p><a href="cpp-language-injected-class-name.html"><span class="t-spar">&#27880;&#20837;&#31867;&#21517;</span></a> &#30340;&#22768;&#26126;&#28857;&#32039;&#38543;&#20854;&#31867;&#65288;&#25110;&#31867;&#27169;&#26495;&#65289;&#23450;&#20041;&#30340;&#24320;&#33457;&#25324;&#21495;&#20043;&#21518;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">typename</span> T<span class="sy1">&gt;</span>
<span class="kw1">struct</span> Array
<span class="co1">// : std::enable_shared_from_this&lt;Array&gt; // &#38169;&#35823;&#65306;&#27880;&#20837;&#31867;&#21517;&#19981;&#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="sy4">:</span> <a href="cpp-memory-enable_shared_from_this.html"><span class="kw744">std::<span class="me2">enable_shared_from_this</span></span></a><span class="sy1">&lt;</span> Array<span class="sy1">&lt;</span>T<span class="sy1">&gt;</span> <span class="sy1">&gt;</span> <span class="co1">// OK &#65306;&#27169;&#26495;&#21517; Array &#22312;&#20316;&#29992;&#22495;&#20013;</span>
<span class="br0">{</span> <span class="co1">// &#27880;&#20837;&#31867;&#21517; Array &#29616;&#22312;&#22312;&#20316;&#29992;&#22495;&#20013;&#65292;&#22914;&#21516;&#20026;&#20844;&#24320;&#25104;&#21592;&#21517;</span>
Array<span class="sy2">*</span> p<span class="sy4">;</span> <span class="co1">// &#25351;&#21521; Array&lt;T&gt; &#30340;&#25351;&#38024;</span>
<span class="br0">}</span><span class="sy4">;</span></pre></div>
</div>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx11">
<td>
<p>&#20989;&#25968;&#23616;&#37096;&#39044;&#23450;&#20041;&#21464;&#37327; <span class="t-c"><span class="mw-geshi cpp source-cpp">__func__</span></span> &#30340;&#22768;&#26126;&#28857;&#32039;&#25509;&#20989;&#25968;&#23450;&#20041;&#30340;&#20989;&#25968;&#20307;&#20043;&#21069;&#12290;</p>
</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-cxx17">
<td>
<p><a href="cpp-language-structured_binding.html">&#32467;&#26500;&#21270;&#32465;&#23450;</a>&#30340;&#22768;&#26126;&#28857;&#32039;&#38543;&#35813;&#32467;&#26500;&#21270;&#32465;&#23450;&#22768;&#26126;&#30340;<span class="t-spar">&#26631;&#35782;&#31526;&#21015;&#34920;</span>&#20043;&#21518;&#65292;&#20294;&#32467;&#26500;&#21270;&#32465;&#23450;&#30340;&#21021;&#22987;&#21270;&#22120;&#31105;&#27490;&#25552;&#21450;&#20854;&#25152;&#24341;&#20837;&#30340;&#20219;&#20309;&#21517;&#23383;&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></td>
</tr>
</table>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx11">
<td>
<p>&#22768;&#26126;&#20110;<a href="cpp-language-range-for.html">&#22522;&#20110;&#33539;&#22260;&#30340; for &#35821;&#21477;</a>&#30340;<span class="t-spar">&#33539;&#22260;&#22768;&#26126;</span>&#30340;&#21464;&#37327;<span class="t-rev-inl t-since-cxx17"><span>&#25110;&#32467;&#26500;&#21270;&#32465;&#23450;</span> <span><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></span></span>&#30340;&#22768;&#26126;&#28857;&#32039;&#38543;&#30456;&#24212;&#30340;<span class="t-spar">&#33539;&#22260;&#34920;&#36798;&#24335;</span>&#20043;&#21518;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><a href="cpp-container-vector.html"><span class="kw1269">std::<span class="me2">vector</span></span></a><span class="sy1">&lt;</span><span class="kw4">int</span><span class="sy1">&gt;</span> x<span class="sy4">;</span>
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">auto</span> x <span class="sy4">:</span> x<span class="br0">)</span> <span class="br0">{</span> <span class="co1">// OK &#65306;&#31532;&#20108;&#20010; x &#25351;&#20195; std::vector&lt;int&gt;</span>
<span class="co1">// &#24490;&#29615;&#20307;&#20869; x &#25351;&#20195;&#24490;&#29615;&#21464;&#37327;</span>
<span class="br0">}</span></pre></div>
</div>
</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></td>
</tr>
</table>
<p><a href="cpp-language-template_parameters.html">&#27169;&#26495;&#24418;&#21442;</a>&#30340;&#22768;&#26126;&#28857;&#32039;&#38543;&#20854;&#23436;&#25972;&#27169;&#26495;&#24418;&#21442;&#65288;&#21253;&#25324;&#21487;&#36873;&#30340;&#40664;&#35748;&#23454;&#21442;&#65289;&#20043;&#21518;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">typedef</span> <span class="kw4">unsigned</span> <span class="kw4">char</span> T<span class="sy4">;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T
<span class="sy1">=</span> T <span class="co1">// &#26597;&#25214;&#25214;&#21040; unsigned char &#30340; typedef &#21517;</span>
, T <span class="co1">// &#26597;&#25214;&#25214;&#21040;&#27169;&#26495;&#24418;&#21442;</span>
N <span class="sy1">=</span> <span class="nu0">0</span><span class="sy1">&gt;</span> <span class="kw1">struct</span> A <span class="br0">{</span> <span class="br0">}</span><span class="sy4">;</span></pre></div>
</div>
<table class="metadata plainlinks ambox mbox-small-left ambox-notice" style="">
<tr>
<td class="mbox-empty-cell"></td>
<td class="mbox-text" style="">&#26412;&#33410;&#26410;&#23436;&#25104;<br />
&#21407;&#22240;&#65306;[basic.scope.pdecl] &#30340;&#21097;&#20313;&#20869;&#23481;</td>
</tr>
</table>
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">&#24341;&#29992;</span></h3>
<div class="t-ref-std-c++17">
<ul>
<li>C++17 &#26631;&#20934;&#65288;ISO/IEC 14882:2017&#65289;&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>6.3 Scope [basic.scope]</li>
</ul>
</dd>
</dl>
</div>
<div class="t-ref-std-c++14">
<ul>
<li>C++14 &#26631;&#20934;&#65288;ISO/IEC 14882:2014&#65289;&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>3.3 Scope [basic.scope]</li>
</ul>
</dd>
</dl>
</div>
<div class="t-ref-std-c++11">
<ul>
<li>C++11 &#26631;&#20934;&#65288;ISO/IEC 14882:2011&#65289;&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>3.3 Scope [basic.scope]</li>
</ul>
</dd>
</dl>
</div>
<div class="t-ref-std-c++98">
<ul>
<li>C++98 &#26631;&#20934;&#65288;ISO/IEC 14882:1998&#65289;&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>3.3 Declarative regions and scopes [basic.scope]</li>
</ul>
</dd>
</dl>
</div>
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">&#21442;&#38405;</span></h3>
<table class="t-dsc-begin"></table>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>