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

222 lines
30 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>&#26377;&#38480;&#23450;&#30340;&#21517;&#23383;&#26597;&#25214;</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_qualified_lookup skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">&#26377;&#38480;&#23450;&#30340;&#21517;&#23383;&#26597;&#25214;</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>&#20986;&#29616;&#22312;&#20316;&#29992;&#22495;&#35299;&#26512;&#25805;&#20316;&#31526; <code><b>::</b></code> &#21491;&#36793;&#30340;&#21517;&#23383;&#26159;<i>&#38480;&#23450;</i>&#21517;&#65288;&#21442;&#38405;<a href="cpp-language-identifiers.html#.E6.9C.89.E9.99.90.E5.AE.9A.E7.9A.84.E6.A0.87.E8.AF.86.E7.AC.A6">&#26377;&#38480;&#23450;&#30340;&#26631;&#35782;&#31526;</a>&#65289;&#12290; &#38480;&#23450;&#21517;&#21487;&#33021;&#20195;&#34920;&#30340;&#26159;&#65306;</p>
<ul>
<li>&#31867;&#30340;&#25104;&#21592;&#65288;&#21253;&#25324;&#38745;&#24577;&#21644;&#38750;&#38745;&#24577;&#20989;&#25968;&#12289;&#31867;&#22411;&#21644;&#27169;&#26495;&#31561;&#65289;</li>
<li>&#21629;&#21517;&#31354;&#38388;&#30340;&#25104;&#21592;&#65288;&#21253;&#25324;&#20854;&#23427;&#30340;&#21629;&#21517;&#31354;&#38388;&#65289;</li>
<li>&#26522;&#20030;&#39033;</li>
</ul>
<p>&#33509; <code><b>::</b></code> &#24038;&#36793;&#20026;&#31354;&#65292;&#21017;&#26597;&#25214;&#36807;&#31243;&#20165;&#20250;&#32771;&#34385;&#20840;&#23616;&#21629;&#21517;&#31354;&#38388;&#20316;&#29992;&#22495;&#20013;&#20316;&#20986;&#65288;&#25110;&#36890;&#36807; <a href="cpp-language-namespace.html">using &#22768;&#26126;</a>&#24341;&#20837;&#21040;&#20840;&#23616;&#21629;&#21517;&#31354;&#38388;&#20013;&#65289;&#30340;&#22768;&#26126;&#12290;&#36825;&#20351;&#24471;&#21363;&#20351;&#34987;&#23616;&#37096;&#22768;&#26126;&#38544;&#34255;&#30340;&#21517;&#23383;&#20063;&#33021;&#22815;&#34987;&#35775;&#38382;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co2">#include &lt;iostream&gt;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw1">struct</span> std<span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;fail<span class="es1">\n</span>&quot;</span><span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306;&#23545; &#39;std&#39; &#30340;&#26080;&#38480;&#23450;&#26597;&#25214;&#25214;&#21040; struct</span>
<span class="sy4">::</span><a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;ok<span class="es1">\n</span>&quot;</span><span class="sy4">;</span> <span class="co1">// &#27491;&#30830;&#65306; ::std &#25214;&#21040;&#21629;&#21517;&#31354;&#38388; std</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#21482;&#26377;&#23436;&#25104;&#23545; <code><b>::</b></code> &#24038;&#36793;&#30340;&#21517;&#23383;&#30340;&#26597;&#25214;&#65288;&#38500;&#38750;&#24038;&#36793;&#25152;&#29992;&#30340;&#26159; <a href="cpp-language-decltype.html">decltype</a> &#34920;&#36798;&#24335;&#25110;&#24038;&#36793;&#20026;&#31354;&#65289;&#65292;&#25165;&#33021;&#23545;&#20854;&#21491;&#36793;&#30340;&#21517;&#23383;&#36827;&#34892;&#21517;&#23383;&#26597;&#25214;&#12290;&#35813;&#24038;&#20391;&#26597;&#25214;&#21487;&#20197;&#26159;&#26377;&#38480;&#23450;&#25110;&#26080;&#38480;&#23450;&#30340;&#65292;&#21462;&#20915;&#20110;&#36825;&#20010;&#21517;&#23383;&#24038;&#36793;&#26159;&#21542;&#26377;&#21478;&#19968;&#20010; <code><b>::</b></code>&#65292;&#20294;&#20854;&#20165;&#32771;&#34385;&#21629;&#21517;&#31354;&#38388;&#12289;&#31867;&#31867;&#22411;&#12289;&#26522;&#20030;&#21644;&#33021;&#29305;&#21270;&#20026;&#31867;&#22411;&#30340;&#27169;&#26495;&#65306;</p>
<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">static</span> <span class="kw4">int</span> n<span class="sy4">;</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw4">int</span> A<span class="sy4">;</span>
A<span class="sy4">::</span><span class="me2">n</span> <span class="sy1">=</span> <span class="nu0">42</span><span class="sy4">;</span> <span class="co1">// &#27491;&#30830;&#65306;&#23545; :: &#24038;&#36793;&#30340; A &#30340;&#26080;&#38480;&#23450;&#26597;&#25214;&#24573;&#30053;&#21464;&#37327;</span>
A b<span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306;&#23545; A &#30340;&#26080;&#38480;&#23450;&#26597;&#25214;&#25214;&#21040;&#20102;&#21464;&#37327; A</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#24403;&#38480;&#23450;&#21517;&#20026;<a href="cpp-language-declarations.html">&#22768;&#26126;&#31526;</a>&#26102;&#65292;&#23545;&#21516;&#19968;&#22768;&#26126;&#31526;&#20013;&#38543;&#35813;&#38480;&#23450;&#21517;&#20043;&#21518;&#65292;&#32780;&#38750;&#20854;&#20043;&#21069;&#30340;&#21517;&#23383;&#30340;<a href="cpp-language-unqualified_lookup.html">&#26080;&#38480;&#23450;&#26597;&#25214;</a>&#65292;&#26159;&#22312;&#25104;&#21592;&#30340;&#25152;&#22312;&#31867;&#25110;&#21629;&#21517;&#31354;&#38388;&#30340;&#20316;&#29992;&#22495;&#20013;&#36827;&#34892;&#30340;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">class</span> X <span class="br0">{</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">constexpr</span> <span class="kw4">int</span> number <span class="sy1">=</span> <span class="nu0">100</span><span class="sy4">;</span>
<span class="kw1">struct</span> C <span class="br0">{</span>
<span class="kw1">class</span> X <span class="br0">{</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">int</span> number <span class="sy1">=</span> <span class="nu0">50</span><span class="sy4">;</span>
<span class="kw4">static</span> X arr<span class="br0">[</span>number<span class="br0">]</span><span class="sy4">;</span>
<span class="br0">}</span><span class="sy4">;</span>
X C<span class="sy4">::</span><span class="me2">arr</span><span class="br0">[</span>number<span class="br0">]</span>, brr<span class="br0">[</span>number<span class="br0">]</span><span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306;&#23545; X &#30340;&#26597;&#25214;&#25214;&#21040; ::X &#32780;&#19981;&#26159; C::X</span>
C<span class="sy4">::</span><span class="me2">X</span> C<span class="sy4">::</span><span class="me2">arr</span><span class="br0">[</span>number<span class="br0">]</span>, brr<span class="br0">[</span>number<span class="br0">]</span><span class="sy4">;</span> <span class="co1">// OK &#65306; arr &#30340;&#22823;&#23567;&#26159; 50 &#65292; brr &#30340;&#22823;&#23567;&#26159; 100</span></pre></div>
</div>
<p>&#33509; <code><b>::</b></code> &#21518;&#36319;&#23383;&#31526; <code><b>~</b></code> &#20877;&#36319;&#30528;&#19968;&#20010;&#26631;&#35782;&#31526;&#65288;&#20063;&#23601;&#26159;&#35828;&#25351;&#23450;&#20102;&#26512;&#26500;&#20989;&#25968;&#25110;&#20266;&#26512;&#26500;&#20989;&#25968;&#65289;&#65292;&#37027;&#20040;&#35813;&#26631;&#35782;&#31526;&#23558;&#22312;&#19982; <code><b>::</b></code> &#24038;&#36793;&#30340;&#21517;&#23383;&#30456;&#21516;&#30340;&#20316;&#29992;&#22495;&#20013;&#26597;&#25214;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">struct</span> C <span class="br0">{</span> <span class="kw1">typedef</span> <span class="kw4">int</span> I<span class="sy4">;</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">typedef</span> <span class="kw4">int</span> I1, I2<span class="sy4">;</span>
<span class="kw4">extern</span> <span class="kw4">int</span> <span class="sy2">*</span>p, <span class="sy2">*</span>q<span class="sy4">;</span>
<span class="kw1">struct</span> A <span class="br0">{</span> ~A<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">typedef</span> A AB<span class="sy4">;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
p<span class="sy2">-</span><span class="sy1">&gt;</span>C<span class="sy4">::</span><span class="me2">I</span><span class="sy4">::</span>~I<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// ~ &#20043;&#21518;&#30340;&#21517;&#23383; I &#22312; :: &#21069;&#38754;&#30340; I &#30340;&#21516;&#19968;&#20010;&#20316;&#29992;&#22495;&#20013;&#26597;&#25214;</span>
<span class="co1">//&#65288;&#20063;&#23601;&#26159;&#35828;&#65292;&#22312; C &#30340;&#20316;&#29992;&#22495;&#20013;&#26597;&#25214;&#65292;&#22240;&#27492;&#26597;&#25214;&#32467;&#26524;&#26159; C::I &#65289;</span>
q<span class="sy2">-</span><span class="sy1">&gt;</span>I1<span class="sy4">::</span>~I2<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#21517;&#23383; I2 &#22312; I1 &#30340;&#21516;&#19968;&#20010;&#20316;&#29992;&#22495;&#20013;&#26597;&#25214;&#65292;</span>
<span class="co1">// &#20063;&#23601;&#26159;&#35828;&#20174;&#24403;&#21069;&#30340;&#20316;&#29992;&#22495;&#20013;&#26597;&#25214;&#65292;&#22240;&#27492;&#26597;&#25214;&#32467;&#26524;&#26159; ::I2</span>
AB x<span class="sy4">;</span>
x.<span class="me1">AB</span><span class="sy4">::</span>~AB<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// ~ &#20043;&#21518;&#30340;&#21517;&#23383; AB &#22312; :: &#21069;&#38754;&#30340; AB &#30340;&#21516;&#19968;&#20010;&#20316;&#29992;&#22495;&#20013;&#26597;&#25214;</span>
<span class="co1">// &#20063;&#23601;&#26159;&#35828;&#20174;&#24403;&#21069;&#30340;&#20316;&#29992;&#22495;&#20013;&#26597;&#25214;&#65292;&#22240;&#27492;&#26597;&#25214;&#32467;&#26524;&#26159; ::AB</span>
<span class="br0">}</span></pre></div>
</div>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx11">
<td>
<h4><span class="mw-headline" id=".E6.9E.9A.E4.B8.BE.E9.A1.B9">&#26522;&#20030;&#39033;</span></h4>
<p>&#33509;&#23545;&#24038;&#36793;&#30340;&#21517;&#23383;&#30340;&#26597;&#25214;&#32467;&#26524;&#26159;<a href="cpp-language-enum.html">&#26522;&#20030;</a>&#65288;&#26080;&#35770;&#26159;&#26377;&#20316;&#29992;&#22495;&#36824;&#26159;&#26080;&#20316;&#29992;&#22495;&#65289;&#65292;&#21491;&#36793;&#21517;&#23383;&#30340;&#26597;&#25214;&#32467;&#26524;&#24517;&#39035;&#26159;&#23646;&#20110;&#35813;&#26522;&#20030;&#30340;&#19968;&#20010;&#26522;&#20030;&#39033;&#65292;&#21542;&#21017;&#31243;&#24207;&#38750;&#33391;&#26500;&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></td>
</tr>
</table>
<h4><span class="mw-headline" id=".E7.B1.BB.E6.88.90.E5.91.98">&#31867;&#25104;&#21592;</span></h4>
<p>&#33509;&#23545;&#24038;&#36793;&#30340;&#21517;&#23383;&#30340;&#26597;&#25214;&#32467;&#26524;&#26159;&#26576;&#20010;&#31867;&#12289;&#32467;&#26500;&#20307;&#25110;&#32852;&#21512;&#20307;&#30340;&#21517;&#23383;&#65292;&#21017; <code><b>::</b></code> &#21491;&#36793;&#30340;&#21517;&#23383;&#22312;&#35813;&#31867;&#12289;&#32467;&#26500;&#20307;&#25110;&#32852;&#21512;&#20307;&#30340;&#20316;&#29992;&#22495;&#20013;&#36827;&#34892;&#26597;&#25214;&#65288;&#22240;&#27492;&#21487;&#33021;&#25214;&#21040;&#35813;&#31867;&#25110;&#20854;&#22522;&#31867;&#30340;&#25104;&#21592;&#30340;&#22768;&#26126;&#65289;&#65292;&#20294;&#26377;&#20197;&#19979;&#20363;&#22806;&#24773;&#20917;&#65306;</p>
<ul>
<li>&#26512;&#26500;&#20989;&#25968;&#25353;&#22914;&#19978;&#25152;&#36848;&#36827;&#34892;&#26597;&#25214;&#65288;&#21363;&#22312; <code><b>::</b></code> &#24038;&#36793;&#30340;&#21517;&#23383;&#30340;&#20316;&#29992;&#22495;&#20013;&#26597;&#25214;&#65289;</li>
<li><a href="cpp-language-cast_operator.html">&#29992;&#25143;&#23450;&#20041;&#36716;&#25442;</a>&#20989;&#25968;&#21517;&#20013;&#30340;&#36716;&#25442;&#31867;&#22411;&#26631;&#35782;&#39318;&#20808;&#22312;&#35813;&#31867;&#31867;&#22411;&#30340;&#20316;&#29992;&#22495;&#20013;&#26597;&#25214;&#12290;&#33509;&#26410;&#25214;&#21040;&#65292;&#21017;&#22312;&#24403;&#21069;&#20316;&#29992;&#22495;&#20013;&#26597;&#25214;&#35813;&#21517;&#23383;&#12290;</li>
<li>&#27169;&#26495;&#23454;&#21442;&#20013;&#20351;&#29992;&#30340;&#21517;&#23383;&#65292;&#22312;&#24403;&#21069;&#20316;&#29992;&#22495;&#20013;&#26597;&#25214;&#65288;&#32780;&#38750;&#22312;&#27169;&#26495;&#21517;&#30340;&#20316;&#29992;&#22495;&#20013;&#26597;&#25214;&#65289;</li>
<li><a href="cpp-language-namespace.html">using &#22768;&#26126;</a>&#20013;&#30340;&#21517;&#23383;&#65292;&#36824;&#32771;&#34385;&#22312;&#24403;&#21069;&#20316;&#29992;&#22495;&#20013;&#22768;&#26126;&#30340;&#21464;&#37327;&#12289;&#25968;&#25454;&#25104;&#21592;&#12289;&#20989;&#25968;&#25110;&#26522;&#20030;&#39033;&#25152;&#38544;&#34255;&#30340;&#31867;&#25110;&#26522;&#20030;&#21517;</li>
</ul>
<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;&#19978;&#36848;&#20869;&#23481;&#30340;&#23567;&#31034;&#20363;</td>
</tr>
</table>
<p>&#33509; <code><b>::</b></code> &#21491;&#36793;&#25152;&#25351;&#21517;&#30340;&#26159;&#21644;&#20854;&#24038;&#36793;&#30456;&#21516;&#30340;&#31867;&#65292;&#21017;&#21491;&#36793;&#30340;&#21517;&#23383;&#34920;&#31034;&#30340;&#26159;&#35813;&#31867;&#30340;<a href="cpp-language-constructor.html">&#26500;&#36896;&#20989;&#25968;</a>&#12290;&#36825;&#31181;&#38480;&#23450;&#21517;&#20165;&#33021;&#29992;&#22312;&#26500;&#36896;&#20989;&#25968;&#30340;&#22768;&#26126;&#20197;&#21450;&#24341;&#20837;<a href="cpp-language-using_declaration.html#.E7.BB.A7.E6.89.BF.E6.9E.84.E9.80.A0.E5.87.BD.E6.95.B0">&#32487;&#25215;&#26500;&#36896;&#20989;&#25968;</a>&#30340; <a href="cpp-language-using_declaration.html">using &#22768;&#26126;</a>&#20013;&#12290;&#22312;&#25152;&#26377;&#24573;&#30053;&#20989;&#25968;&#21517;&#30340;&#26597;&#25214;&#36807;&#31243;&#20013;&#65288;&#21363;&#22312;&#26597;&#25214; <code><b>::</b></code> &#24038;&#36793;&#30340;&#21517;&#23383;&#65292;&#25110;&#26597;&#25214;<a href="cpp-language-elaborated_type_specifier.html">&#35814;&#36848;&#31867;&#22411;&#35828;&#26126;&#31526;</a>&#25110;<a href="cpp-language-derived_class.html">&#22522;&#31867;&#35828;&#26126;&#31526;</a>&#20013;&#30340;&#21517;&#23383;&#26102;&#65289;&#65292;&#21017;&#23558;&#21516;&#26679;&#30340;&#35821;&#27861;&#35299;&#37322;&#25104;&#27880;&#20837;&#31867;&#21517;&#65306;</p>
<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> A<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> B <span class="sy4">:</span> A <span class="br0">{</span> B<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span><span class="sy4">;</span>
A<span class="sy4">::</span><span class="me2">A</span><span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="br0">}</span> <span class="co1">// A::A &#25351;&#23450;&#30340;&#26159;&#26500;&#36896;&#20989;&#25968;&#65292;&#29992;&#20110;&#22768;&#26126;</span>
B<span class="sy4">::</span><span class="me2">B</span><span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="br0">}</span> <span class="co1">// B::B &#25351;&#23450;&#30340;&#26159;&#26500;&#36896;&#20989;&#25968;&#65292;&#29992;&#20110;&#22768;&#26126;</span>
B<span class="sy4">::</span><span class="me2">A</span> ba<span class="sy4">;</span> <span class="co1">// B::A&#65288;&#22312; B &#30340;&#20316;&#29992;&#22495;&#20013;&#26597;&#25214;&#65289;&#25351;&#23450;&#30340;&#26159;&#31867;&#22411; A</span>
A<span class="sy4">::</span><span class="me2">A</span> a<span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306;A::A &#19981;&#26159;&#31867;&#22411;</span>
<span class="kw1">struct</span> A<span class="sy4">::</span><span class="me2">A</span> a2<span class="sy4">;</span> <span class="co1">// &#27491;&#30830;&#65306;&#35814;&#36848;&#31867;&#22411;&#35828;&#26126;&#31526;&#20013;&#30340;&#26597;&#25214;&#26159;&#24573;&#30053;&#20989;&#25968;&#30340;&#65292;</span>
<span class="co1">// &#22240;&#27492; A::A &#22312; A &#30340;&#20316;&#29992;&#22495;&#20013;&#26597;&#25214;&#65292;&#20110;&#26159;&#25351;&#23450;&#30340;&#26159;&#31867; A</span>
<span class="co1">// &#65288;&#20134;&#21363;&#20854;&#27880;&#20837;&#31867;&#21517;&#65289;</span></pre></div>
</div>
<p>&#26377;&#38480;&#23450;&#21517;&#23383;&#26597;&#25214;&#21487;&#29992;&#26469;&#35775;&#38382;&#34987;&#23884;&#22871;&#22768;&#26126;&#25110;&#34987;&#27966;&#29983;&#31867;&#38544;&#34255;&#20102;&#30340;&#31867;&#25104;&#21592;&#12290;&#23545;&#26377;&#38480;&#23450;&#30340;&#25104;&#21592;&#20989;&#25968;&#30340;&#35843;&#29992;&#23558;&#19981;&#24471;&#26159;&#34394;&#35843;&#29992;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">struct</span> B <span class="br0">{</span> <span class="kw1">virtual</span> <span class="kw4">void</span> foo<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> D <span class="sy4">:</span> B <span class="br0">{</span> <span class="kw4">void</span> foo<span class="br0">(</span><span class="br0">)</span> override<span class="sy4">;</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
D x<span class="sy4">;</span>
B<span class="sy3">&amp;</span> b <span class="sy1">=</span> x<span class="sy4">;</span>
b.<span class="me1">foo</span><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; D::foo&#65288;&#34394;&#35843;&#29992;&#27966;&#21457;&#65289;</span>
b.<span class="me1">B</span><span class="sy4">::</span><span class="me2">foo</span><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; B::foo&#65288;&#38745;&#24577;&#35843;&#29992;&#27966;&#21457;&#65289;</span>
<span class="br0">}</span></pre></div>
</div>
<h4><span class="mw-headline" id=".E5.91.BD.E5.90.8D.E7.A9.BA.E9.97.B4.E7.9A.84.E6.88.90.E5.91.98">&#21629;&#21517;&#31354;&#38388;&#30340;&#25104;&#21592;</span></h4>
<p>&#33509; <code><b>::</b></code> &#24038;&#36793;&#30340;&#21517;&#23383;&#20195;&#34920;&#30340;&#26159;&#21629;&#21517;&#31354;&#38388;&#65292;&#25110;&#32773; <code><b>::</b></code> &#24038;&#36793;&#20026;&#31354;&#65288;&#36825;&#31181;&#24773;&#20917;&#20195;&#34920;&#20840;&#23616;&#21629;&#21517;&#31354;&#38388;&#65289;&#65292;&#37027;&#20040; <code><b>::</b></code> &#21491;&#36793;&#30340;&#21517;&#23383;&#23601;&#22312;&#36825;&#20010;&#21629;&#21517;&#31354;&#38388;&#30340;&#20316;&#29992;&#22495;&#20013;&#36827;&#34892;&#26597;&#25214;&#65292;&#20294;&#26377;&#20197;&#19979;&#20363;&#22806;&#65306;</p>
<ul>
<li>&#22312;&#27169;&#26495;&#23454;&#21442;&#20013;&#20351;&#29992;&#30340;&#21517;&#23383;&#22312;&#24403;&#21069;&#20316;&#29992;&#22495;&#20013;&#26597;&#25214;</li>
</ul>
<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="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">typename</span> T<span class="sy1">&gt;</span> <span class="kw1">struct</span> foo <span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> X <span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
<span class="br0">}</span>
N<span class="sy4">::</span><span class="me2">foo</span><span class="sy1">&lt;</span>X<span class="sy1">&gt;</span> x<span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306;X &#26597;&#25214;&#32467;&#26524;&#20026; ::X &#32780;&#19981;&#26159; N::X</span></pre></div>
</div>
<p>&#22312;<a href="cpp-language-namespace.html">&#21629;&#21517;&#31354;&#38388;</a> <code>N</code> &#20013;&#36827;&#34892;&#26377;&#38480;&#23450;&#26597;&#25214;&#26102;&#65292;&#39318;&#20808;&#35201;&#32771;&#34385;&#22788;&#20110; <code>N</code> &#20043;&#20013;&#30340;&#25152;&#26377;&#22768;&#26126;&#65292;&#20197;&#21450;&#22788;&#20110; <code>N</code> &#30340;<a href="cpp-language-namespace.html#.E5.86.85.E8.81.94.E5.91.BD.E5.90.8D.E7.A9.BA.E9.97.B4">&#20869;&#32852;&#21629;&#21517;&#31354;&#38388;&#25104;&#21592;</a>&#65288;&#24182;&#19988;&#20256;&#36882;&#24615;&#22320;&#21253;&#25324;&#23427;&#20204;&#30340;&#20869;&#32852;&#21629;&#21517;&#31354;&#38388;&#25104;&#21592;&#65289;&#20043;&#20013;&#30340;&#25152;&#26377;&#22768;&#26126;&#12290;&#22914;&#26524;&#36825;&#20010;&#38598;&#21512;&#20013;&#27809;&#26377;&#25214;&#21040;&#20219;&#20309;&#22768;&#26126;&#65292;&#21017;&#20877;&#32771;&#34385;&#22312; <code>N</code> &#21644; <code>N</code> &#30340;&#25152;&#26377;&#20256;&#36882;&#24615;&#30340;&#20869;&#32852;&#21629;&#21517;&#31354;&#38388;&#25104;&#21592;&#20013;&#21457;&#29616;&#30340;&#25152;&#26377;<a href="cpp-language-namespace.html#using_.E6.8C.87.E4.BB.A4">using &#25351;&#20196;</a>&#25152;&#25351;&#21517;&#30340;&#21629;&#21517;&#31354;&#38388;&#20043;&#20013;&#30340;&#22768;&#26126;&#12290;&#36825;&#26465;&#35268;&#21017;&#26159;&#36882;&#24402;&#23454;&#26045;&#30340;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw4">int</span> x<span class="sy4">;</span>
<span class="kw1">namespace</span> Y <span class="br0">{</span>
<span class="kw4">void</span> f<span class="br0">(</span><span class="kw4">float</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw4">void</span> h<span class="br0">(</span><span class="kw4">int</span><span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw1">namespace</span> Z <span class="br0">{</span>
<span class="kw4">void</span> h<span class="br0">(</span><span class="kw4">double</span><span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw1">namespace</span> A <span class="br0">{</span>
<span class="kw1">using</span> <span class="kw1">namespace</span> Y<span class="sy4">;</span>
<span class="kw4">void</span> f<span class="br0">(</span><span class="kw4">int</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw4">void</span> g<span class="br0">(</span><span class="kw4">int</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw4">int</span> i<span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw1">namespace</span> B <span class="br0">{</span>
<span class="kw1">using</span> <span class="kw1">namespace</span> Z<span class="sy4">;</span>
<span class="kw4">void</span> f<span class="br0">(</span><span class="kw4">char</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw4">int</span> i<span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw1">namespace</span> AB <span class="br0">{</span>
<span class="kw1">using</span> <span class="kw1">namespace</span> A<span class="sy4">;</span>
<span class="kw1">using</span> <span class="kw1">namespace</span> B<span class="sy4">;</span>
<span class="kw4">void</span> g<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw4">void</span> h<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
AB<span class="sy4">::</span><span class="me2">g</span><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#22312; AB &#20013;&#26597;&#25214;&#65292;&#25214;&#21040;&#20102; AB::g &#24182;&#19988;&#36873;&#25321;&#20102; AB::g(void)</span>
<span class="co1">// &#65288;&#24182;&#26410;&#22312; A &#21644; B &#20013;&#26597;&#25214;&#65289;</span>
AB<span class="sy4">::</span><span class="me2">f</span><span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#39318;&#20808;&#22312; AB &#20013;&#26597;&#25214;&#65292;&#26410;&#33021;&#25214;&#21040; f</span>
<span class="co1">// &#28982;&#21518;&#20877;&#22312; A &#21644; B &#20013;&#26597;&#25214;</span>
<span class="co1">// &#25214;&#21040;&#20102; A::f &#21644; B::f&#65288;&#20294;&#24182;&#26410;&#22312; Y &#20013;&#26597;&#25214;&#65292;&#22240;&#32780;&#19981;&#32771;&#34385; Y::f&#65289;</span>
<span class="co1">// &#37325;&#36733;&#20915;&#35758;&#36873;&#20013; A::f(int)</span>
AB<span class="sy4">::</span><span class="me2">x</span><span class="sy2">++</span><span class="sy4">;</span> <span class="co1">// &#39318;&#20808;&#22312; AB &#20013;&#26597;&#25214;&#65292;&#26410;&#33021;&#25214;&#21040; x</span>
<span class="co1">// &#28982;&#21518;&#20877;&#22312; A &#21644; B &#20013;&#26597;&#25214;&#12290;&#26410;&#33021;&#25214;&#21040; x</span>
<span class="co1">// &#28982;&#21518;&#20877;&#22312; Y &#21644; Z &#20013;&#26597;&#25214;&#12290;&#36824;&#26159;&#27809;&#26377; x&#65306;&#36825;&#26159;&#19968;&#20010;&#38169;&#35823;</span>
AB<span class="sy4">::</span><span class="me2">i</span><span class="sy2">++</span><span class="sy4">;</span> <span class="co1">// &#22312; AB &#20013;&#26597;&#25214;&#65292;&#26410;&#33021;&#25214;&#21040; i</span>
<span class="co1">// &#28982;&#21518;&#20877;&#22312; A &#21644; B &#20013;&#26597;&#25214;&#12290;&#25214;&#21040;&#20102; A::i &#21644; B::i&#65306;&#36825;&#26159;&#19968;&#20010;&#38169;&#35823;</span>
AB<span class="sy4">::</span><span class="me2">h</span><span class="br0">(</span><span class="nu16">16.8</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#39318;&#20808;&#22312; AB &#20013;&#26597;&#25214;&#65306;&#26410;&#33021;&#25214;&#21040; h</span>
<span class="co1">// &#28982;&#21518;&#20877;&#22312; A &#21644; B &#20013;&#26597;&#25214;&#12290;&#26410;&#33021;&#25214;&#21040; h</span>
<span class="co1">// &#28982;&#21518;&#20877;&#22312; Y &#21644; Z &#20013;&#26597;&#25214;&#12290;</span>
<span class="co1">// &#25214;&#21040;&#20102; Y::h &#21644; Z::h&#12290;&#37325;&#36733;&#20915;&#35758;&#36873;&#20013; Z::h(double)</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#21516;&#19968;&#20010;&#22768;&#26126;&#20801;&#35768;&#34987;&#22810;&#27425;&#25214;&#21040;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">namespace</span> A <span class="br0">{</span> <span class="kw4">int</span> a<span class="sy4">;</span> <span class="br0">}</span>
<span class="kw1">namespace</span> B <span class="br0">{</span> <span class="kw1">using</span> <span class="kw1">namespace</span> A<span class="sy4">;</span> <span class="br0">}</span>
<span class="kw1">namespace</span> D <span class="br0">{</span> <span class="kw1">using</span> A<span class="sy4">::</span><span class="me2">a</span><span class="sy4">;</span> <span class="br0">}</span>
<span class="kw1">namespace</span> BD <span class="br0">{</span>
<span class="kw1">using</span> <span class="kw1">namespace</span> B<span class="sy4">;</span>
<span class="kw1">using</span> <span class="kw1">namespace</span> D<span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw4">void</span> g<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
BD<span class="sy4">::</span><span class="me2">a</span><span class="sy2">++</span><span class="sy4">;</span> <span class="co1">// OK &#65306; &#36890;&#36807; B &#21644; D &#25214;&#21040;&#21516;&#19968;&#20010; A::a</span>
<span class="br0">}</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;N4861 6.5.3.2[namespace.qual] &#20013;&#30340;&#21097;&#20313;&#20869;&#23481;&#65292;&#23581;&#35797;&#32553;&#30701;&#20854;&#31034;&#20363;</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-unqualified_lookup.html">&#26080;&#38480;&#23450;&#21517;&#23383;&#26597;&#25214;</a></li>
<li><a href="cpp-language-scope.html">&#20316;&#29992;&#22495;</a></li>
<li><a href="cpp-language-adl.html">&#23454;&#21442;&#20381;&#36182;&#26597;&#25214;</a></li>
<li><a href="cpp-language-function_template.html">&#27169;&#26495;&#23454;&#21442;&#25512;&#23548;</a></li>
<li><a href="cpp-language-overload_resolution.html">&#37325;&#36733;&#20915;&#35758;</a></li>
</ul>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>