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

418 lines
51 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>using &#22768;&#26126;</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_using_declaration skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">using &#22768;&#26126;</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;&#21035;&#22788;&#23450;&#20041;&#30340;&#21517;&#23383;&#24341;&#20837;&#21040;&#27492; using &#22768;&#26126;&#25152;&#20986;&#29616;&#30340;&#22768;&#26126;&#21306;&#20013;&#12290;</p>
<table class="t-sdsc-begin">
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><code><b>using</b></code> <code><b>typename</b></code><span class="t-mark">(&#21487;&#36873;)</span> <span class="t-spar">&#23884;&#22871;&#21517;&#35828;&#26126;&#31526;</span> <span class="t-spar">&#26080;&#38480;&#23450;&#26631;&#35782;</span> <code><b>;</b></code></td>
<td class="t-sdsc-nopad"></td>
<td><span class="t-mark-rev t-until-cxx17">(C++17 &#21069;)</span></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><code><b>using</b></code> <span class="t-spar">&#22768;&#26126;&#31526;&#21015;&#34920;</span> <code><b>;</b></code></td>
<td class="t-sdsc-nopad"></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
</table>
<table class="t-par-begin">
<tr class="t-par">
<td><code><b>typename</b></code></td>
<td>-</td>
<td>&#22312; using &#22768;&#26126;&#20174;&#22522;&#31867;&#21521;&#31867;&#27169;&#26495;&#20013;&#24341;&#20837;&#25104;&#21592;&#31867;&#22411;&#26102;&#65292;&#21487;&#33021;&#38656;&#35201;&#29992;&#20851;&#38190;&#35789; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw1">typename</span></span></span> &#35299;&#20915;<a href="cpp-language-dependent_name.html">&#24453;&#20915;&#21517;</a></td>
</tr>
<tr class="t-par">
<td><span class="t-spar">&#23884;&#22871;&#21517;&#35828;&#26126;&#31526;</span></td>
<td>-</td>
<td>&#21517;&#23383;&#19982;&#20316;&#29992;&#22495;&#35299;&#26512;&#36816;&#31639;&#31526; <code>::</code> &#30340;&#24207;&#21015;&#65292;&#20197;&#20316;&#29992;&#22495;&#35299;&#26512;&#36816;&#31639;&#31526;&#32467;&#23614;&#12290;&#21333;&#20010; <code>::</code> &#25351;&#20195;&#20840;&#23616;&#21629;&#21517;&#31354;&#38388;&#12290;</td>
</tr>
<tr class="t-par">
<td><span class="t-spar">&#26080;&#38480;&#23450;&#26631;&#35782;</span></td>
<td>-</td>
<td><a href="cpp-language-identifiers.html">&#26631;&#35782;&#34920;&#36798;&#24335;</a></td>
</tr>
<tr class="t-par">
<td><span class="t-spar">&#22768;&#26126;&#31526;&#21015;&#34920;</span></td>
<td>-</td>
<td>&#19968;&#20010;&#25110;&#22810;&#20010;&#24418;&#24335;&#20026; <code><b>typename</b></code><span class="t-mark">(&#21487;&#36873;)</span> <span class="t-spar">&#23884;&#22871;&#21517;&#35828;&#26126;&#31526;</span> <span class="t-spar">&#26080;&#38480;&#23450;&#26631;&#35782;</span> &#30340;&#22768;&#26126;&#31526;&#30340;&#36887;&#21495;&#20998;&#38548;&#21015;&#34920;&#12290;&#26576;&#20123;&#25110;&#25152;&#26377;&#22768;&#26126;&#31526;&#37117;&#21487;&#20197;&#21518;&#38543;&#30465;&#30053;&#21495; <span class="t-c"><span class="mw-geshi cpp source-cpp">...</span></span> &#20197;&#25351;&#31034;<a href="cpp-language-parameter_pack.html">&#21253;&#23637;&#24320;</a></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E8.A7.A3.E9.87.8A">&#35299;&#37322;</span></h3>
<p>using &#22768;&#26126;&#21487;&#20197;&#29992;&#20110;&#23558;&#21629;&#21517;&#31354;&#38388;&#25104;&#21592;&#24341;&#20837;&#21040;&#21478;&#19968;&#21629;&#21517;&#31354;&#38388;&#19982;&#22359;&#20316;&#29992;&#22495;&#65292;&#25110;&#23558;&#22522;&#31867;&#25104;&#21592;&#24341;&#20837;&#21040;&#27966;&#29983;&#31867;&#23450;&#20041;&#20013;<span class="t-rev-inl t-since-cxx20"><span>&#65292;&#25110;&#23558;<a href="cpp-language-enum.html">&#26522;&#20030;&#39033;</a>&#24341;&#20837;&#21629;&#21517;&#31354;&#38388;&#12289;&#22359;&#25110;&#31867;&#20316;&#29992;&#22495;&#20013;</span> <span><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></span></span>&#12290;</p>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx17">
<td>
<p>&#21253;&#21547;&#22810;&#20110;&#19968;&#20010; using &#22768;&#26126;&#31526;&#30340; using &#22768;&#26126;&#31561;&#20215;&#20110;&#19968;&#20010;&#23545;&#24212;&#20010;&#25968;&#30340;&#21253;&#21547;&#21333;&#20010; using &#22768;&#26126;&#31526;&#30340; using &#22768;&#26126;&#24207;&#21015;&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></td>
</tr>
</table>
<h4><span class="mw-headline" id=".E5.9C.A8.E5.91.BD.E5.90.8D.E7.A9.BA.E9.97.B4.E5.92.8C.E5.9D.97.E4.BD.9C.E7.94.A8.E5.9F.9F.E4.B8.AD">&#22312;&#21629;&#21517;&#31354;&#38388;&#21644;&#22359;&#20316;&#29992;&#22495;&#20013;</span></h4>
<p>using &#22768;&#26126;&#23558;&#21478;&#19968;&#21629;&#21517;&#31354;&#38388;&#30340;&#25104;&#21592;&#24341;&#20837;&#21040;&#24403;&#21069;&#21629;&#21517;&#31354;&#38388;&#25110;&#22359;&#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="co2">#include &lt;iostream&gt;</span>
<span class="co2">#include &lt;string&gt;</span>
<span class="kw1">using</span> <a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a><span class="sy4">;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
string str <span class="sy1">=</span> <span class="st0">&quot;&#20030;&#20363;&quot;</span><span class="sy4">;</span>
<span class="kw1">using</span> <a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a><span class="sy4">;</span>
cout <span class="sy1">&lt;&lt;</span> str<span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#32454;&#33410;&#35265;<a href="cpp-language-namespace.html">&#21629;&#21517;&#31354;&#38388;</a>&#12290;</p>
<h4><span class="mw-headline" id=".E5.9C.A8.E7.B1.BB.E5.AE.9A.E4.B9.89.E4.B8.AD">&#22312;&#31867;&#23450;&#20041;&#20013;</span></h4>
<p>using &#22768;&#26126;&#21487;&#20197;&#23558;&#22522;&#31867;&#25104;&#21592;&#24341;&#20837;&#21040;&#27966;&#29983;&#31867;&#30340;&#23450;&#20041;&#20013;&#65292;&#20363;&#22914;&#23558;&#22522;&#31867;&#30340;&#21463;&#20445;&#25252;&#25104;&#21592;&#26292;&#38706;&#20026;&#27966;&#29983;&#31867;&#30340;&#20844;&#24320;&#25104;&#21592;&#12290;&#27492;&#26102; <span class="t-spar">&#23884;&#22871;&#21517;&#35828;&#26126;&#31526;</span> &#24517;&#39035;&#25351;&#21517;&#25152;&#23450;&#20041;&#30340;&#31867;&#30340;&#26576;&#20010;&#22522;&#31867;&#12290;&#22914;&#26524;&#36825;&#20010;&#21517;&#23383;&#26159;&#35813;&#22522;&#31867;&#30340;&#26576;&#20010;&#37325;&#36733;&#30340;&#25104;&#21592;&#20989;&#25968;&#30340;&#21517;&#23383;&#65292;&#37027;&#20040;&#20855;&#26377;&#35813;&#21517;&#23383;&#30340;&#25152;&#26377;&#22522;&#31867;&#25104;&#21592;&#20989;&#25968;&#22343;&#34987;&#24341;&#20837;&#12290;&#22914;&#26524;&#27966;&#29983;&#31867;&#24050;&#21253;&#21547;&#20855;&#26377;&#30456;&#21516;&#21517;&#23383;&#12289;&#24418;&#21442;&#21015;&#34920;&#21644;&#38480;&#23450;&#30340;&#25104;&#21592;&#65292;&#37027;&#20040;&#27966;&#29983;&#31867;&#25104;&#21592;&#38544;&#34255;&#25110;&#35206;&#30422;&#20174;&#22522;&#31867;&#24341;&#20837;&#30340;&#25104;&#21592;&#65288;&#19981;&#19982;&#20043;&#20914;&#31361;&#65289;&#12290;</p>
<div class="t-example">
<div class="t-example-live-link"></div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co2">#include &lt;iostream&gt;</span>
<span class="kw1">struct</span> B <span class="br0">{</span>
<span class="kw1">virtual</span> <span class="kw4">void</span> f<span class="br0">(</span><span class="kw4">int</span><span class="br0">)</span> <span class="br0">{</span> <a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;B::f<span class="es1">\n</span>&quot;</span><span class="sy4">;</span> <span class="br0">}</span>
<span class="kw4">void</span> g<span class="br0">(</span><span class="kw4">char</span><span class="br0">)</span> <span class="br0">{</span> <a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;B::g<span class="es1">\n</span>&quot;</span><span class="sy4">;</span> <span class="br0">}</span>
<span class="kw4">void</span> h<span class="br0">(</span><span class="kw4">int</span><span class="br0">)</span> <span class="br0">{</span> <a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;B::h<span class="es1">\n</span>&quot;</span><span class="sy4">;</span> <span class="br0">}</span>
<span class="kw1">protected</span><span class="sy4">:</span>
<span class="kw4">int</span> m<span class="sy4">;</span> <span class="co1">// B::m &#26159;&#21463;&#20445;&#25252;&#30340;</span>
<span class="kw1">typedef</span> <span class="kw4">int</span> value_type<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="kw1">using</span> B<span class="sy4">::</span><span class="me2">m</span><span class="sy4">;</span> <span class="co1">// D::m &#26159;&#20844;&#24320;&#30340;</span>
<span class="kw1">using</span> B<span class="sy4">::</span><span class="me2">value_type</span><span class="sy4">;</span> <span class="co1">// D::value_type &#26159;&#20844;&#24320;&#30340;</span>
<span class="kw1">using</span> B<span class="sy4">::</span><span class="me2">f</span><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="br0">{</span> <a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;D::f<span class="es1">\n</span>&quot;</span><span class="sy4">;</span> <span class="br0">}</span> <span class="co1">// D::f(int) &#35206;&#30422; B::f(int)</span>
<span class="kw1">using</span> B<span class="sy4">::</span><span class="me2">g</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="br0">{</span> <a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;D::g<span class="es1">\n</span>&quot;</span><span class="sy4">;</span> <span class="br0">}</span> <span class="co1">// g(int) &#19982; g(char) &#22343;&#20316;&#20026; D &#25104;&#21592;&#21487;&#35265;</span>
<span class="kw1">using</span> B<span class="sy4">::</span><span class="me2">h</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="br0">{</span> <a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;D::h<span class="es1">\n</span>&quot;</span><span class="sy4">;</span> <span class="br0">}</span> <span class="co1">// D::h(int) &#38544;&#34255; B::h(int)</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 d<span class="sy4">;</span>
B<span class="sy3">&amp;</span> b <span class="sy1">=</span> d<span class="sy4">;</span>
<span class="co1">// b.m = 2; // &#38169;&#35823;&#65292;B::m &#21463;&#20445;&#25252;</span>
d.<span class="me1">m</span> <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span> <span class="co1">// &#21463;&#20445;&#25252;&#30340; B::m &#21487;&#20316;&#20026;&#20844;&#24320;&#30340; D::m &#35775;&#38382;</span>
b.<span class="me1">f</span><span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992;&#27966;&#29983;&#31867; f()</span>
d.<span class="me1">f</span><span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992;&#27966;&#29983;&#31867; f()</span>
d.<span class="me1">g</span><span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992;&#27966;&#29983;&#31867; g(int)</span>
d.<span class="me1">g</span><span class="br0">(</span><span class="st0">&#39;a&#39;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992;&#22522;&#31867; g(char)</span>
b.<span class="me1">h</span><span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992;&#22522;&#31867; h()</span>
d.<span class="me1">h</span><span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992;&#27966;&#29983;&#31867; h()</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#36755;&#20986;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="text source-text">
<pre class="de1">D::f
D::f
D::g
B::g
B::h
D::h</pre></div>
</div>
</div>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx11">
<td>
<h4><span class="mw-headline" id=".E7.BB.A7.E6.89.BF.E6.9E.84.E9.80.A0.E5.87.BD.E6.95.B0">&#32487;&#25215;&#26500;&#36896;&#20989;&#25968;</span></h4>
<p>&#22914;&#26524; <i>using &#22768;&#26126;</i>&#25351;&#20195;&#20102;&#27491;&#22312;&#23450;&#20041;&#30340;&#31867;&#30340;&#26576;&#20010;&#30452;&#25509;&#22522;&#31867;&#30340;&#26500;&#36896;&#20989;&#25968;&#65288;&#20363;&#22914; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw1">using</span> Base<span class="sy4">::</span><span class="me2">Base</span><span class="sy4">;</span></span></span>&#65289;&#65292;&#37027;&#20040;&#22312;&#21021;&#22987;&#21270;&#27966;&#29983;&#31867;&#26102;&#65292;&#35813;&#22522;&#31867;&#30340;&#25152;&#26377;&#26500;&#36896;&#20989;&#25968;&#65288;&#24573;&#30053;&#25104;&#21592;&#35775;&#38382;&#65289;&#22343;&#23545;&#37325;&#36733;&#20915;&#35758;&#21487;&#35265;&#12290;</p>
<p>&#22914;&#26524;&#37325;&#36733;&#20915;&#35758;&#36873;&#25321;&#20102;&#32487;&#25215;&#30340;&#26500;&#36896;&#20989;&#25968;&#65292;&#37027;&#20040;&#22914;&#26524;&#23427;&#34987;&#29992;&#20110;&#26500;&#36896;&#30456;&#24212;&#22522;&#31867;&#30340;&#23545;&#35937;&#26102;&#21487;&#35775;&#38382;&#65292;&#23427;&#20063;&#26159;&#21487;&#35775;&#38382;&#30340;&#65306;&#24341;&#20837;&#23427;&#30340; using &#22768;&#26126;&#30340;&#21487;&#35775;&#38382;&#24615;&#34987;&#24573;&#30053;&#12290;</p>
<p>&#22914;&#26524;&#22312;&#21021;&#22987;&#21270;&#36825;&#31181;&#27966;&#29983;&#31867;&#23545;&#35937;&#26102;&#37325;&#36733;&#20915;&#35758;&#36873;&#25321;&#20102;&#32487;&#25215;&#30340;&#26500;&#36896;&#20989;&#25968;&#20043;&#19968;&#65292;&#37027;&#20040;&#29992;&#36825;&#20010;&#32487;&#25215;&#30340;&#26500;&#36896;&#20989;&#25968;&#23545;&#20174;&#20043;&#32487;&#25215;&#35813;&#26500;&#36896;&#20989;&#25968;&#30340; <code>Base</code> &#23376;&#23545;&#35937;&#36827;&#34892;&#21021;&#22987;&#21270;&#65292;&#32780; <code>Derived</code> &#30340;&#25152;&#26377;&#20854;&#20182;&#22522;&#31867;&#21644;&#25104;&#21592;&#65292;&#37117;&#22914;&#21516;&#20197;&#39044;&#32622;&#30340;&#40664;&#35748;&#26500;&#36896;&#20989;&#25968;&#19968;&#26679;&#36827;&#34892;&#21021;&#22987;&#21270;&#65288;&#22914;&#26524;&#25552;&#20379;&#40664;&#35748;&#25104;&#21592;&#21021;&#22987;&#21270;&#22120;&#21017;&#20351;&#29992;&#65292;&#21542;&#21017;&#36827;&#34892;&#40664;&#35748;&#21021;&#22987;&#21270;&#65289;&#12290;&#25972;&#20010;&#21021;&#22987;&#21270;&#34987;&#35270;&#20316;&#21333;&#20010;&#20989;&#25968;&#35843;&#29992;&#65306;&#32487;&#25215;&#30340;&#26500;&#36896;&#20989;&#25968;&#30340;&#21508;&#24418;&#21442;&#30340;&#21021;&#22987;&#21270;&#65292;&#25353;&#39034;&#24207;&#26089;&#20110;&#27966;&#29983;&#31867;&#23545;&#35937;&#30340;&#20219;&#20309;&#22522;&#31867;&#25110;&#25104;&#21592;&#30340;&#21021;&#22987;&#21270;&#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> B1 <span class="br0">{</span> B1<span class="br0">(</span><span class="kw4">int</span>, ...<span class="br0">)</span> <span class="br0">{</span> <span class="br0">}</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> B2 <span class="br0">{</span> B2<span class="br0">(</span><span class="kw4">double</span><span class="br0">)</span> <span class="br0">{</span> <span class="br0">}</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">int</span> get<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">struct</span> D1 <span class="sy4">:</span> B1 <span class="br0">{</span>
<span class="kw1">using</span> B1<span class="sy4">::</span><span class="me2">B1</span><span class="sy4">;</span> <span class="co1">// &#32487;&#25215; B1(int, ...)</span>
<span class="kw4">int</span> x<span class="sy4">;</span>
<span class="kw4">int</span> y <span class="sy1">=</span> get<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">void</span> test<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
D1 d<span class="br0">(</span><span class="nu0">2</span>, <span class="nu0">3</span>, <span class="nu0">4</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// OK&#65306;B1 &#36890;&#36807;&#35843;&#29992; B1(2, 3, 4) &#21021;&#22987;&#21270;&#65292;</span>
<span class="co1">// &#28982;&#21518; d.x &#34987;&#40664;&#35748;&#21021;&#22987;&#21270;&#65288;&#19981;&#36827;&#34892;&#21021;&#22987;&#21270;&#65289;&#65292;</span>
<span class="co1">// &#28982;&#21518; d.y &#36890;&#36807;&#35843;&#29992; get() &#21021;&#22987;&#21270;</span>
D1 e<span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306;D1 &#27809;&#26377;&#40664;&#35748;&#26500;&#36896;&#20989;&#25968;</span>
<span class="br0">}</span>
<span class="kw1">struct</span> D2 <span class="sy4">:</span> B2 <span class="br0">{</span>
<span class="kw1">using</span> B2<span class="sy4">::</span><span class="me2">B2</span><span class="sy4">;</span> <span class="co1">// &#32487;&#25215; B2(double)</span>
B1 b<span class="sy4">;</span>
<span class="br0">}</span><span class="sy4">;</span>
D2 f<span class="br0">(</span><span class="nu16">1.0</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306;B1 &#27809;&#26377;&#40664;&#35748;&#26500;&#36896;&#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="kw1">struct</span> W <span class="br0">{</span> W<span class="br0">(</span><span class="kw4">int</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> X <span class="sy4">:</span> <span class="kw1">virtual</span> W <span class="br0">{</span>
<span class="kw1">using</span> W<span class="sy4">::</span><span class="me2">W</span><span class="sy4">;</span> <span class="co1">// &#32487;&#25215; W(int)</span>
X<span class="br0">(</span><span class="br0">)</span> <span class="sy1">=</span> delete<span class="sy4">;</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> Y <span class="sy4">:</span> X <span class="br0">{</span>
<span class="kw1">using</span> X<span class="sy4">::</span><span class="me2">X</span><span class="sy4">;</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> Z <span class="sy4">:</span> Y, <span class="kw1">virtual</span> W <span class="br0">{</span>
<span class="kw1">using</span> Y<span class="sy4">::</span><span class="me2">Y</span><span class="sy4">;</span>
<span class="br0">}</span><span class="sy4">;</span>
Z z<span class="br0">(</span><span class="nu0">0</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// OK&#65306;Y &#30340;&#21021;&#22987;&#21270;&#19981;&#35843;&#29992; X &#30340;&#40664;&#35748;&#26500;&#36896;&#20989;&#25968;</span></pre></div>
</div>
<p>&#22914;&#26524;&#26500;&#36896;&#20989;&#25968;&#20174; B &#31867;&#22411;&#30340;&#22810;&#20010;&#22522;&#31867;&#23376;&#23545;&#35937;&#32487;&#25215;&#65292;&#37027;&#20040;&#31243;&#24207;&#38750;&#33391;&#26500;&#65292;&#36825;&#19982;&#22810;&#32487;&#25215;&#30340;&#38750;&#38745;&#24577;&#25104;&#21592;&#20989;&#25968;&#30456;&#20284;&#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="kw4">int</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> <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="sy4">;</span>
<span class="kw1">struct</span> C1 <span class="sy4">:</span> B <span class="br0">{</span> <span class="kw1">using</span> B<span class="sy4">::</span><span class="me2">B</span><span class="sy4">;</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> C2 <span class="sy4">:</span> B <span class="br0">{</span> <span class="kw1">using</span> B<span class="sy4">::</span><span class="me2">B</span><span class="sy4">;</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> D1 <span class="sy4">:</span> C1, C2 <span class="br0">{</span>
<span class="kw1">using</span> C1<span class="sy4">::</span><span class="me2">C1</span><span class="sy4">;</span>
<span class="kw1">using</span> C2<span class="sy4">::</span><span class="me2">C2</span><span class="sy4">;</span>
<span class="br0">}</span><span class="sy4">;</span>
D1 d1<span class="br0">(</span><span class="nu0">0</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#38750;&#33391;&#26500;&#65306;&#20174;&#19981;&#21516;&#30340; B &#22522;&#31867;&#23376;&#23545;&#35937;&#32487;&#25215;&#30340;&#26500;&#36896;&#20989;&#25968;</span>
<span class="kw1">struct</span> V1 <span class="sy4">:</span> <span class="kw1">virtual</span> B <span class="br0">{</span> <span class="kw1">using</span> B<span class="sy4">::</span><span class="me2">B</span><span class="sy4">;</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> V2 <span class="sy4">:</span> <span class="kw1">virtual</span> B <span class="br0">{</span> <span class="kw1">using</span> B<span class="sy4">::</span><span class="me2">B</span><span class="sy4">;</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> D2 <span class="sy4">:</span> V1, V2 <span class="br0">{</span>
<span class="kw1">using</span> V1<span class="sy4">::</span><span class="me2">V1</span><span class="sy4">;</span>
<span class="kw1">using</span> V2<span class="sy4">::</span><span class="me2">V2</span><span class="sy4">;</span>
<span class="br0">}</span><span class="sy4">;</span>
D2 d2<span class="br0">(</span><span class="nu0">0</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// OK&#65306;&#21482;&#26377;&#19968;&#20010; B &#23376;&#23545;&#35937;&#12290;</span>
<span class="co1">// &#36825;&#21021;&#22987;&#21270;&#34394; B &#22522;&#31867;&#65292;&#23427;&#21021;&#22987;&#21270; A &#22522;&#31867;</span>
<span class="co1">// &#28982;&#21518;&#22914;&#21516;&#29992;&#39044;&#32622;&#30340;&#40664;&#35748;&#26500;&#36896;&#20989;&#25968;</span>
<span class="co1">// &#21021;&#22987;&#21270; V1 &#19982; V2 &#22522;&#31867;</span></pre></div>
</div>
<p>&#19982;&#20219;&#20309;&#20854;&#20182;&#38750;&#38745;&#24577;&#25104;&#21592;&#20989;&#25968;&#30340; using &#22768;&#26126;&#30456;&#21516;&#65292;&#22914;&#26524;&#32487;&#25215;&#30340;&#26500;&#36896;&#20989;&#25968;&#30340;&#31614;&#21517;&#19982; <code>Derived</code> &#30340;&#26500;&#36896;&#20989;&#25968;&#20043;&#19968;&#21305;&#37197;&#65292;&#37027;&#20040;&#23427;&#34987; <code>Derived</code> &#20013;&#25214;&#21040;&#30340;&#29256;&#26412;&#20174;&#26597;&#25214;&#20013;&#38544;&#34255;&#12290;&#22914;&#26524; <code>Base</code> &#30340;&#32487;&#25215;&#26500;&#36896;&#20989;&#25968;&#24688;&#22909;&#26377;&#19982; <code>Derived</code> &#30340;&#22797;&#21046;/&#31227;&#21160;&#26500;&#36896;&#20989;&#25968;&#21305;&#37197;&#30340;&#31614;&#21517;&#65292;&#37027;&#20040;&#23427;&#19981;&#22952;&#30861; <code>Derived</code> &#22797;&#21046;/&#31227;&#21160;&#26500;&#36896;&#20989;&#25968;&#30340;&#38544;&#24335;&#29983;&#25104;&#65288;&#28982;&#21518;&#32487;&#25215;&#30340;&#29256;&#26412;&#34987;&#20854;&#38544;&#34255;&#65292;&#36825;&#19982; <code>using operator=</code> &#31867;&#20284;&#65289;&#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> B1 <span class="br0">{</span> B1<span class="br0">(</span><span class="kw4">int</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> B2 <span class="br0">{</span> B2<span class="br0">(</span><span class="kw4">int</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> D2 <span class="sy4">:</span> B1, B2 <span class="br0">{</span>
<span class="kw1">using</span> B1<span class="sy4">::</span><span class="me2">B1</span><span class="sy4">;</span>
<span class="kw1">using</span> B2<span class="sy4">::</span><span class="me2">B2</span><span class="sy4">;</span>
D2<span class="br0">(</span><span class="kw4">int</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// OK&#65306;D2::D2(int) &#38544;&#34255; B1::B1(int) &#21644; B2::B2(int)</span>
<span class="br0">}</span><span class="sy4">;</span>
D2 d2<span class="br0">(</span><span class="nu0">0</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; D2::D2(int)</span></pre></div>
</div>
<p>&#22312;<a href="cpp-language-templates.html">&#27169;&#26495;&#21270;&#31867;</a>&#20013;&#65292;&#22914;&#26524; using &#22768;&#26126;&#25351;&#20195;<a href="cpp-language-dependent_name.html">&#24453;&#20915;&#21517;</a>&#65292;&#32780; <span class="t-spar">&#23884;&#22871;&#21517;&#35828;&#26126;&#31526;</span> &#25317;&#26377;&#19982;&#35813; <span class="t-spar">&#26080;&#38480;&#23450;&#26631;&#35782;</span> &#30456;&#21516;&#30340;&#32456;&#27490;&#21517;&#65292;&#37027;&#20040;&#35748;&#20026;&#23427;&#25351;&#21517;&#26500;&#36896;&#20989;&#25968;&#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">class</span> T<span class="sy1">&gt;</span>
<span class="kw1">struct</span> A <span class="sy4">:</span> T <span class="br0">{</span>
<span class="kw1">using</span> T<span class="sy4">::</span><span class="me2">T</span><span class="sy4">;</span> <span class="co1">// OK &#65306;&#32487;&#25215; T &#30340;&#26500;&#36896;&#20989;&#25968;</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">&gt;</span>
<span class="kw1">struct</span> B <span class="sy4">:</span> T, A<span class="sy1">&lt;</span>U<span class="sy1">&gt;</span> <span class="br0">{</span>
<span class="kw1">using</span> A<span class="sy1">&lt;</span>U<span class="sy1">&gt;</span><span class="sy4">::</span><span class="me2">A</span><span class="sy4">;</span> <span class="co1">// OK &#65306;&#32487;&#25215; A&lt;U&gt; &#30340;&#26500;&#36896;&#20989;&#25968;</span>
<span class="kw1">using</span> T<span class="sy4">::</span><span class="me2">A</span><span class="sy4">;</span> <span class="co1">// &#19981;&#32487;&#25215; T &#30340;&#26500;&#36896;&#20989;&#25968;&#23613;&#31649; T &#21487;&#20197;&#26159; A&lt;&gt; &#30340;&#29305;&#21270;</span>
<span class="br0">}</span><span class="sy4">;</span></pre></div>
</div>
</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>
<h4><span class="mw-headline" id=".E5.BC.95.E5.85.A5.E6.9C.89.E4.BD.9C.E7.94.A8.E5.9F.9F.E6.9E.9A.E4.B8.BE.E9.A1.B9">&#24341;&#20837;&#26377;&#20316;&#29992;&#22495;&#26522;&#20030;&#39033;</span></h4>
<p>&#38500;&#20102;&#21478;&#19968;&#21629;&#21517;&#31354;&#38388;&#30340;&#25104;&#21592;&#21644;&#22522;&#31867;&#30340;&#25104;&#21592;&#65292; using &#22768;&#26126;&#20063;&#33021;&#23558;<a href="cpp-language-enum.html">&#26522;&#20030;</a>&#30340;&#26522;&#20030;&#39033;&#24341;&#20837;&#21629;&#21517;&#31354;&#38388;&#12289;&#22359;&#21644;&#31867;&#20316;&#29992;&#22495;&#12290;</p>
<p>using &#22768;&#26126;&#20063;&#33021;&#29992;&#20110;&#26080;&#20316;&#29992;&#22495;&#26522;&#20030;&#39033;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw2">enum</span> <span class="kw1">class</span> button <span class="br0">{</span> up, down <span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> S <span class="br0">{</span>
<span class="kw1">using</span> button<span class="sy4">::</span><span class="me2">up</span><span class="sy4">;</span>
button b <span class="sy1">=</span> up<span class="sy4">;</span> <span class="co1">// OK</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">using</span> button<span class="sy4">::</span><span class="me2">down</span><span class="sy4">;</span>
<span class="kw4">constexpr</span> button non_up <span class="sy1">=</span> down<span class="sy4">;</span> <span class="co1">// OK</span>
<span class="kw4">constexpr</span> <span class="kw4">auto</span> get_button<span class="br0">(</span><span class="kw4">bool</span> is_up<span class="br0">)</span>
<span class="br0">{</span>
<span class="kw1">using</span> button<span class="sy4">::</span><span class="me2">up</span>, button<span class="sy4">::</span><span class="me2">down</span><span class="sy4">;</span>
<span class="kw1">return</span> is_up <span class="sy4">?</span> up <span class="sy4">:</span> down<span class="sy4">;</span> <span class="co1">// OK</span>
<span class="br0">}</span>
<span class="kw2">enum</span> unscoped <span class="br0">{</span> val <span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">using</span> unscoped<span class="sy4">::</span><span class="me2">val</span><span class="sy4">;</span> <span class="co1">// OK &#65292;&#23613;&#31649;&#19981;&#38656;&#35201;</span></pre></div>
</div>
</td>
<td><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">&#27880;&#35299;</span></h3>
<p>&#21482;&#26377;&#22312; using &#22768;&#26126;&#20013;&#26126;&#30830;&#25552;&#21450;&#30340;&#21517;&#23383;&#25165;&#34987;&#20256;&#36865;&#21040;&#22768;&#26126;&#21306;&#20013;&#65306;&#29305;&#21035;&#26159;&#65292;using &#22768;&#26126;&#26522;&#20030;&#31867;&#22411;&#21517;&#26102;&#65292;&#24182;&#19981;&#20256;&#36865;&#20854;&#26522;&#20030;&#39033;&#12290;</p>
<p>using &#22768;&#26126;&#19981;&#33021;&#25351;&#20195;&#21629;&#21517;&#31354;&#38388;<span class="t-rev-inl t-until-cxx20"><span>&#65292;&#26377;&#20316;&#29992;&#22495;&#26522;&#20030;&#39033;</span> <span><span class="t-mark-rev t-until-cxx20">(C++20 &#21069;)</span></span></span>&#65292;&#22522;&#31867;&#30340;&#26512;&#26500;&#20989;&#25968;&#65292;&#25110;&#29992;&#25143;&#23450;&#20041;&#36716;&#25442;&#20989;&#25968;&#30340;&#25104;&#21592;&#27169;&#26495;&#30340;&#29305;&#21270;&#12290;</p>
<p>using &#22768;&#26126;&#19981;&#33021;&#25351;&#21517;&#25104;&#21592;&#27169;&#26495;&#30340;&#29305;&#21270;&#65288;&#35821;&#27861;&#19981;&#23481;&#35768;<a href="cpp-language-templates.html#.E6.A8.A1.E6.9D.BF.E6.A0.87.E8.AF.86">&#27169;&#26495;&#26631;&#35782;</a>&#65289;&#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">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<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="kw1">using</span> B<span class="sy4">::</span><span class="me2">f</span><span class="sy4">;</span> <span class="co1">// OK&#65306;&#25351;&#21517;&#27169;&#26495;</span>
<span class="co1">// using B::f&lt;int&gt;; // &#38169;&#35823;&#65306;&#25351;&#21517;&#27169;&#26495;&#29305;&#21270;</span>
<span class="kw4">void</span> g<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> f<span class="sy1">&lt;</span><span class="kw4">int</span><span class="sy1">&gt;</span><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span>
<span class="br0">}</span><span class="sy4">;</span></pre></div>
</div>
<p>using &#22768;&#26126;&#20063;&#19981;&#33021;&#24341;&#20837;&#24453;&#20915;&#30340;&#25104;&#21592;&#27169;&#26495;&#30340;&#21517;&#23383;&#20316;&#20026;<i>&#27169;&#26495;&#21517;</i>&#65288;&#19981;&#23481;&#35768;<a href="cpp-language-dependent_name.html">&#24453;&#20915;&#21517;</a>&#30340; <code>template</code> &#28040;&#27495;&#20041;&#31526;&#65289;&#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="kw1">class</span> X<span class="sy1">&gt;</span> <span class="kw1">struct</span> B <span class="br0">{</span> <span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T<span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> Y<span class="sy1">&gt;</span> <span class="kw1">struct</span> D <span class="sy4">:</span> B<span class="sy1">&lt;</span>Y<span class="sy1">&gt;</span> <span class="br0">{</span>
<span class="co1">// using B&lt;Y&gt;::template f; // &#38169;&#35823;&#65306;&#19981;&#20801;&#35768;&#28040;&#27495;&#20041;&#31526;</span>
<span class="kw1">using</span> B<span class="sy1">&lt;</span>Y<span class="sy1">&gt;</span><span class="sy4">::</span><span class="me2">f</span><span class="sy4">;</span> <span class="co1">// &#33021;&#32534;&#35793;&#65292;&#20294; f &#19981;&#26159;&#27169;&#26495;&#21517;</span>
<span class="kw4">void</span> g<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="co1">// f&lt;int&gt;(0); // &#38169;&#35823;&#65306;&#24050;&#30693; f &#19981;&#26159;&#30446;&#26631;&#21517;&#65292;</span>
<span class="co1">// &#22240;&#27492; &lt; &#19981;&#24320;&#22987;&#27169;&#26495;&#23454;&#21442;&#21015;&#34920;</span>
f<span class="br0">(</span><span class="nu0">0</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// OK</span>
<span class="br0">}</span>
<span class="br0">}</span><span class="sy4">;</span></pre></div>
</div>
<p>&#22914;&#26524; using &#22768;&#26126;&#24341;&#20837;&#22522;&#31867;&#30340;&#36171;&#20540;&#36816;&#31639;&#31526;&#21040;&#27966;&#29983;&#31867;&#65292;&#32780;&#20854;&#31614;&#21517;&#24688;&#22909;&#19982;&#27966;&#29983;&#31867;&#30340;&#22797;&#21046;&#36171;&#20540;&#25110;&#31227;&#21160;&#36171;&#20540;&#36816;&#31639;&#31526;&#21305;&#37197;&#65292;&#37027;&#20040;&#35813;&#36816;&#31639;&#31526;&#34987;&#27966;&#29983;&#31867;&#30340;&#38544;&#24335;&#22768;&#26126;&#30340;&#22797;&#21046;/&#31227;&#21160;&#36171;&#20540;&#36816;&#31639;&#31526;&#38544;&#34255;&#12290;<span class="t-rev-inl t-since-cxx11"><span>&#30456;&#21516;&#30340;&#35268;&#21017;&#36866;&#29992;&#20110;&#32487;&#25215;&#24688;&#22909;&#19982;&#27966;&#29983;&#31867;&#30340;&#31227;&#21160;/&#22797;&#21046;&#26500;&#36896;&#20989;&#25968;&#21305;&#37197;&#30340;&#22522;&#31867;&#26500;&#36896;&#20989;&#25968;&#30340; using &#22768;&#26126;&#12290;</span> <span><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></span></span></p>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx11">
<td>
<p><a href="cpp-language-using_declaration.html#.E7.BC.BA.E9.99.B7.E6.8A.A5.E5.91.8A">&#19968;&#39033;&#38024;&#23545; C++11 &#30340;&#32570;&#38519;&#25253;&#21578;</a>&#36861;&#28335;&#22320;&#26356;&#25913;&#20102;&#32487;&#25215;&#26500;&#36896;&#20989;&#25968;&#30340;&#35821;&#20041;&#12290;&#20197;&#21069;&#65292;&#32487;&#25215;&#26500;&#36896;&#20989;&#25968;&#30340;&#22768;&#26126;&#23548;&#33268;&#23558;&#19968;&#32452;&#21512;&#25104;&#30340;&#26500;&#36896;&#20989;&#25968;&#22768;&#26126;&#27880;&#20837;&#21040;&#27966;&#29983;&#31867;&#20013;&#65292;&#36825;&#23548;&#33268;&#20887;&#20313;&#30340;&#23454;&#21442;&#22797;&#21046;/&#31227;&#21160;&#65292;&#24182;&#19982;&#26576;&#20123;&#24418;&#24335;&#30340; SFINAE &#30340;&#20132;&#20114;&#26377;&#38382;&#39064;&#65292;&#32780;&#19988;&#26576;&#20123;&#24773;&#20917;&#19979;&#22312;&#20027;&#27969; ABI &#19978;&#26080;&#27861;&#23454;&#29616;&#12290;&#26087;&#32534;&#35793;&#22120;&#21487;&#33021;&#20173;&#28982;&#23454;&#29616;&#20808;&#21069;&#30340;&#35821;&#20041;&#12290;</p>
<div style="margin-left:0px">
<table class="mw-collapsible mw-collapsed" style="background: transparent; text-align: left; border: 1px solid silver; margin: 0.2em auto auto; width:100%; clear: both; padding: 1px;">
<tr>
<th style="background: #F0F2F5; font-size:87%; padding:0.2em 0.3em; text-align:center;"><span style="font-size:115%">&#26087;&#30340;&#32487;&#25215;&#26500;&#36896;&#20989;&#25968;&#35821;&#20041;</span></th>
</tr>
<tr>
<td style="border: solid 1px silver; padding: 8px; background: white;">
<p>&#22914;&#26524; <i>using &#22768;&#26126;</i>&#25351;&#20195;&#34987;&#23450;&#20041;&#31867;&#30340;&#26576;&#20010;&#30452;&#25509;&#22522;&#31867;&#30340;&#26500;&#36896;&#20989;&#25968;&#65288;&#20363;&#22914; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw1">using</span> Base<span class="sy4">::</span><span class="me2">Base</span><span class="sy4">;</span></span></span>&#65289;&#65292;&#37027;&#20040;&#25353;&#29031;&#19979;&#21015;&#35268;&#21017;&#32487;&#25215;&#35813;&#22522;&#31867;&#30340;&#26500;&#36896;&#20989;&#25968;&#65306;</p>
<div class="t-li1"><span class="t-li">1)</span> <i>&#32487;&#25215;&#26500;&#36896;&#20989;&#25968;&#20505;&#36873;</i>&#30340;&#38598;&#21512;&#30001;&#20197;&#19979;&#32452;&#25104;&#65306;</div>
<div class="t-li2"><span class="t-li">a)</span> &#22522;&#31867;&#30340;&#25152;&#26377;&#38750;&#27169;&#26495;&#26500;&#36896;&#20989;&#25968;<span class="t-rev-inl t-since-cxx14"><span>&#65288;&#22312;&#24573;&#30053;&#30465;&#30053;&#21495;&#24418;&#21442;&#21518;&#65292;&#33509;&#23427;&#23384;&#22312;&#65289;</span> <span><span class="t-mark-rev t-since-cxx14">(C++14 &#36215;)</span></span></span></div>
<div class="t-li2"><span class="t-li">b)</span> &#23545;&#20110;&#27599;&#20010;&#26377;&#40664;&#35748;&#23454;&#21442;&#25110;&#30465;&#30053;&#21495;&#24418;&#21442;&#30340;&#26500;&#36896;&#20989;&#25968;&#65292;&#25152;&#26377;&#26500;&#36896;&#20989;&#25968;&#31614;&#21517;&#36890;&#36807;&#20002;&#24323;&#30465;&#30053;&#21495;&#21450;&#36880;&#20010;&#24573;&#30053;&#26469;&#33258;&#24418;&#21442;&#21015;&#34920;&#23614;&#30340;&#40664;&#35748;&#23454;&#21442;&#32452;&#25104;</div>
<div class="t-li2"><span class="t-li">c)</span> &#22522;&#31867;&#30340;&#25152;&#26377;&#26500;&#36896;&#20989;&#25968;&#27169;&#26495;<span class="t-rev-inl t-since-cxx14"><span>&#65288;&#22312;&#24573;&#30053;&#30465;&#30053;&#21495;&#24418;&#21442;&#25968;&#21518;&#65292;&#33509;&#23427;&#23384;&#22312;&#65289;</span> <span><span class="t-mark-rev t-since-cxx14">(C++14 &#36215;)</span></span></span></div>
<div class="t-li2"><span class="t-li">d)</span> &#23545;&#20110;&#27599;&#20010;&#26377;&#40664;&#35748;&#23454;&#21442;&#25110;&#30465;&#30053;&#21495;&#24418;&#21442;&#30340;&#26500;&#36896;&#20989;&#25968;&#27169;&#26495;&#65292;&#25152;&#26377;&#26500;&#36896;&#20989;&#25968;&#31614;&#21517;&#36890;&#36807;&#20002;&#24323;&#30465;&#30053;&#21495;&#32773;&#21450;&#36880;&#20010;&#24573;&#30053;&#26469;&#33258;&#24418;&#21442;&#21015;&#34920;&#23614;&#30340;&#40664;&#35748;&#23454;&#21442;&#32452;&#25104;</div>
<div class="t-li1"><span class="t-li">2)</span> &#25152;&#26377;&#24182;&#38750;&#40664;&#35748;&#26500;&#36896;&#20989;&#25968;&#25110;&#22797;&#21046;/&#31227;&#21160;&#26500;&#36896;&#20989;&#25968;&#65292;&#19988;&#20854;&#31614;&#21517;&#19981;&#19982;&#27966;&#29983;&#31867;&#20013;&#30340;&#29992;&#25143;&#23450;&#20041;&#30340;&#26500;&#36896;&#20989;&#25968;&#30456;&#21305;&#37197;&#30340;&#32487;&#25215;&#26500;&#36896;&#20989;&#25968;&#20505;&#36873;&#65292;&#22312;&#27966;&#29983;&#31867;&#20013;&#38544;&#24335;&#22768;&#26126;&#12290;&#19981;&#32487;&#25215;&#40664;&#35748;&#23454;&#21442;&#65306;
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">struct</span> B1 <span class="br0">{</span>
B1<span class="br0">(</span><span class="kw4">int</span><span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> D1 <span class="sy4">:</span> B1 <span class="br0">{</span>
<span class="kw1">using</span> B1<span class="sy4">::</span><span class="me2">B1</span><span class="sy4">;</span>
<span class="co1">// &#32487;&#25215;&#26500;&#36896;&#20989;&#25968;&#20505;&#36873;&#38598;&#26159; </span>
<span class="co1">// 1. B1(const B1&amp;)</span>
<span class="co1">// 2. B1(B1&amp;&amp;)</span>
<span class="co1">// 3. B1(int)</span>
<span class="co1">// D1 &#26377;&#19979;&#21015;&#26500;&#36896;&#20989;&#25968;&#65306;</span>
<span class="co1">// 1. D1() = delete</span>
<span class="co1">// 2. D1(const D1&amp;) </span>
<span class="co1">// 3. D1(D1&amp;&amp;)</span>
<span class="co1">// 4. D1(int) &lt;- &#32487;&#25215;&#30340;</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> B2 <span class="br0">{</span>
B2<span class="br0">(</span><span class="kw4">int</span> <span class="sy1">=</span> <span class="nu0">13</span>, <span class="kw4">int</span> <span class="sy1">=</span> <span class="nu0">42</span><span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> D2 <span class="sy4">:</span> B2 <span class="br0">{</span>
<span class="kw1">using</span> B2<span class="sy4">::</span><span class="me2">B2</span><span class="sy4">;</span>
<span class="co1">// &#32487;&#25215;&#26500;&#36896;&#20989;&#25968;&#20505;&#36873;&#38598;&#26159;</span>
<span class="co1">// 1. B2(const B2&amp;)</span>
<span class="co1">// 2. B2(B2&amp;&amp;)</span>
<span class="co1">// 3. B2(int = 13, int = 42)</span>
<span class="co1">// 4. B2(int = 13)</span>
<span class="co1">// 5. B2()</span>
<span class="co1">// D2 &#26377;&#19979;&#21015;&#26500;&#36896;&#20989;&#25968;&#65306;</span>
<span class="co1">// 1. D2()</span>
<span class="co1">// 2. D2(const D2&amp;)</span>
<span class="co1">// 3. D2(D2&amp;&amp;)</span>
<span class="co1">// 4. D2(int, int) &lt;- &#32487;&#25215;&#30340;</span>
<span class="co1">// 5. D2(int) &lt;- &#32487;&#25215;&#30340;</span>
<span class="br0">}</span><span class="sy4">;</span></pre></div>
</div>
</div>
<p>&#32487;&#25215;&#30340;&#26500;&#36896;&#20989;&#25968;&#31561;&#20215;&#20110;&#26377;&#31354;&#20989;&#25968;&#20307;&#21644;&#30001;&#21333;&#20010; <span class="t-spar">&#23884;&#22871;&#21517;&#35828;&#26126;&#31526;</span> &#32452;&#25104;&#30340;<a href="cpp-language-initializer_list.html" class="mw-redirect">&#25104;&#21592;&#21021;&#22987;&#21270;&#22120;&#21015;&#34920;</a>&#30340;&#29992;&#25143;&#23450;&#20041;&#26500;&#36896;&#20989;&#25968;&#65292;&#23427;&#23558;&#20854;&#25152;&#26377;&#23454;&#21442;&#36716;&#21457;&#32473;&#22522;&#31867;&#26500;&#36896;&#20989;&#25968;&#12290;</p>
<p>&#23427;&#19982;&#23545;&#24212;&#30340;&#22522;&#31867;&#26500;&#36896;&#20989;&#25968;&#26377;&#21516;&#26679;&#30340;<a href="cpp-language-access.html">&#35775;&#38382;</a>&#12290;&#22914;&#26524;&#29992;&#25143;&#23450;&#20041;&#26500;&#36896;&#20989;&#25968;&#21487;&#28385;&#36275; <code>constexpr</code> &#26500;&#36896;&#20989;&#25968;&#30340;&#35201;&#27714;&#65292;&#37027;&#20040;&#23427;&#20063;&#26159; <code>constexpr</code> &#30340;&#12290;&#22914;&#26524;&#22522;&#31867;&#26500;&#36896;&#20989;&#25968;&#34987;&#24323;&#32622;&#65292;&#25110;&#33509;&#39044;&#32622;&#30340;&#40664;&#35748;&#26500;&#36896;&#20250;&#34987;&#24323;&#32622;&#65292;&#37027;&#20040;&#23427;&#20063;&#20250;&#34987;&#24323;&#32622;&#65288;&#20294;&#19981;&#35745;&#26500;&#36896;&#20989;&#25968;&#35201;&#34987;&#32487;&#25215;&#30340;&#22522;&#31867;&#30340;&#26500;&#36896;&#65289;&#12290;&#32487;&#25215;&#30340;&#26500;&#36896;&#20989;&#25968;&#19981;&#33021;&#34987;&#26174;&#24335;&#23454;&#20363;&#21270;&#25110;&#26174;&#24335;&#29305;&#21270;&#12290;</p>
<p>&#22914;&#26524;&#20004;&#26465; using &#22768;&#26126;&#65288;&#20998;&#21035;&#20174;&#20004;&#20010;&#30452;&#25509;&#22522;&#31867;&#65289;&#32487;&#25215;&#20102;&#26377;&#30456;&#21516;&#31614;&#21517;&#30340;&#26500;&#36896;&#20989;&#25968;&#65292;&#37027;&#20040;&#31243;&#24207;&#38750;&#33391;&#26500;&#12290;</p>
</td>
</tr>
</table>
</div>
</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>&#22312; using &#22768;&#26126;&#20013;&#20351;&#29992;<a href="cpp-language-parameter_pack.html">&#21253;&#23637;&#24320;</a>&#21487;&#20197;&#26367;&#20195;&#36882;&#24402;&#26469;&#32452;&#25104;&#26292;&#38706;&#21464;&#38271;&#22522;&#31867;&#30340;&#37325;&#36733;&#25104;&#21592;&#30340;&#31867;&#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="kw1">typename</span>... <span class="me1">Ts</span><span class="sy1">&gt;</span>
<span class="kw1">struct</span> Overloader <span class="sy4">:</span> Ts... <span class="br0">{</span>
<span class="kw1">using</span> Ts<span class="sy4">::</span><span class="me2">operator</span><span class="br0">(</span><span class="br0">)</span>...<span class="sy4">;</span> <span class="co1">// &#20174;&#27599;&#20010;&#22522;&#31867;&#26292;&#38706; operator()</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">template</span> <span class="sy1">&lt;</span><span class="kw1">typename</span>... <span class="me1">T</span><span class="sy1">&gt;</span>
Overloader<span class="br0">(</span>T...<span class="br0">)</span> <span class="sy2">-</span><span class="sy1">&gt;</span> Overloader<span class="sy1">&lt;</span>T...<span class="sy1">&gt;</span><span class="sy4">;</span> <span class="co1">// C++17 &#25512;&#23548;&#25351;&#24341;&#65292;C++20 &#36215;&#19981;&#20877;&#38656;&#35201;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw4">auto</span> o <span class="sy1">=</span> Overloader<span class="br0">{</span> <span class="br0">[</span><span class="br0">]</span> <span class="br0">(</span><span class="kw4">auto</span> <span class="kw4">const</span><span class="sy3">&amp;</span> a<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> a<span class="sy4">;</span><span class="br0">}</span>,
<span class="br0">[</span><span class="br0">]</span> <span class="br0">(</span><span class="kw4">float</span> f<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> <a href="cpp-io-manip-setprecision.html"><span class="kw1796">std::<span class="me2">setprecision</span></span></a><span class="br0">(</span><span class="nu0">3</span><span class="br0">)</span> <span class="sy1">&lt;&lt;</span> f<span class="sy4">;</span><span class="br0">}</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
</td>
<td><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></td>
</tr>
</table>
<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.link/P0136R1">P0136R1</a></td>
<td>C++11</td>
<td>&#32487;&#25215;&#26500;&#36896;&#20989;&#25968;&#22768;&#26126;&#20250;&#23558;&#39069;&#22806;&#30340;&#26500;&#36896;&#20989;&#25968;&#27880;&#20837;&#27966;&#29983;&#31867;</td>
<td>&#23548;&#33268;&#21517;&#23383;&#26597;&#25214;&#33021;&#25214;&#21040;&#22522;&#31867;&#26500;&#36896;&#20989;&#25968;</td>
</tr>
</table>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>