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

177 lines
22 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>&#29992;&#25143;&#23450;&#20041;&#36716;&#25442;&#20989;&#25968;</title>
<link rel="stylesheet" href="ext.css" />
<link rel="stylesheet" href="site_modules.css" />
</head>
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-cpp_language_cast_operator skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">&#29992;&#25143;&#23450;&#20041;&#36716;&#25442;&#20989;&#25968;</h1>
<div id="bodyContent">
<div id="contentSub"><span class="subpages">&lt; <a href="cpp.html">cpp</a>&lrm; | <a href="cpp-language.html">language</a></span></div>
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
<p>&#20801;&#35768;&#20174;<a href="cpp-language-class.html">&#31867;&#31867;&#22411;</a>&#21040;&#20854;&#20182;&#31867;&#22411;&#30340;<a href="cpp-language-implicit_conversion.html">&#38544;&#24335;&#36716;&#25442;</a>&#25110;<a href="cpp-language-explicit_cast.html">&#26174;&#24335;&#36716;&#25442;</a>&#12290;</p>
<h3><span class="mw-headline" id=".E8.AF.AD.E6.B3.95">&#35821;&#27861;</span></h3>
<p>&#36716;&#25442;&#20989;&#25968;&#30340;&#22768;&#26126;&#19982;<a href="cpp-language-member_functions.html">&#38750;&#38745;&#24577;&#25104;&#21592;&#20989;&#25968;</a>&#25110;<a href="cpp-language-function_template.html">&#20989;&#25968;&#27169;&#26495;</a>&#31867;&#20284;&#65292;&#20294;&#27809;&#26377;&#21442;&#25968;&#25110;&#26174;&#24335;&#36820;&#22238;&#31867;&#22411;&#65292;&#24182;&#25317;&#26377;&#19979;&#21015;&#24418;&#24335;&#30340;&#21517;&#23383;&#65306;</p>
<table class="t-sdsc-begin">
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><code><b>operator</b></code> <span class="t-spar">&#36716;&#25442;&#31867;&#22411;&#26631;&#35782;</span></td>
<td>(1)</td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><code><b>explicit</b></code> <code><b>operator</b></code> <span class="t-spar">&#36716;&#25442;&#31867;&#22411;&#26631;&#35782;</span></td>
<td>(2)</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><code><b>explicit (</b></code> <span class="t-spar">&#34920;&#36798;&#24335;</span> <code><b>)</b></code> <code><b>operator</b></code> <span class="t-spar">&#36716;&#25442;&#31867;&#22411;&#26631;&#35782;</span></td>
<td>(3)</td>
<td><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
</table>
<div class="t-li1"><span class="t-li">1)</span> &#22768;&#26126;&#29992;&#25143;&#23450;&#20041;&#30340;&#36716;&#25442;&#20989;&#25968;&#65292;&#23427;&#21442;&#19982;&#25152;&#26377;<a href="cpp-language-implicit_conversion.html">&#38544;&#24335;</a>&#21644;<a href="cpp-language-explicit_cast.html">&#26174;&#24335;</a>&#36716;&#25442;&#12290;</div>
<div class="t-li1"><span class="t-li">2)</span> &#22768;&#26126;&#29992;&#25143;&#23450;&#20041;&#30340;&#36716;&#25442;&#20989;&#25968;&#65292;&#23427;&#21482;&#20250;&#21442;&#19982;<a href="cpp-language-direct_initialization.html">&#30452;&#25509;&#21021;&#22987;&#21270;</a>&#21644;<a href="cpp-language-explicit_cast.html">&#26174;&#24335;&#36716;&#25442;</a>&#12290;</div>
<div class="t-li1"><span class="t-li">3)</span> &#22768;&#26126;&#29992;&#25143;&#23450;&#20041;&#30340;&#36716;&#25442;&#20989;&#25968;&#65292;&#23427;&#26159;<a href="cpp-language-explicit.html">&#26377;&#26465;&#20214;&#26174;&#24335;</a>&#30340;&#12290;</div>
<p><span class="t-spar">&#36716;&#25442;&#31867;&#22411;&#26631;&#35782;</span>&#26159;&#19968;&#20010;<a href="cpp-language-type.html#.E7.B1.BB.E5.9E.8B.E7.9A.84.E5.91.BD.E5.90.8D">&#31867;&#22411;&#26631;&#35782;</a>&#65292;&#20294;&#23427;&#30340;&#22768;&#26126;&#22120;&#20013;&#19981;&#33021;&#20986;&#29616;&#20989;&#25968;&#19982;&#25968;&#32452;&#36816;&#31639;&#31526; <code><b>[]</b></code> &#25110; <code><b>()</b></code>&#65288;&#22240;&#27492;&#36716;&#25442;&#21040;&#35832;&#22914;&#25968;&#32452;&#30340;&#25351;&#38024;&#30340;&#31867;&#22411;&#35201;&#27714;&#20351;&#29992;&#31867;&#22411;&#21035;&#21517;&#12289;typedef &#25110;&#26631;&#35782;&#27169;&#26495;&#65306;&#35265;&#19979;&#25991;&#65289;&#12290;&#26080;&#35770;&#26159;&#21542;&#20351;&#29992; typedef&#65292;<span class="t-spar">&#36716;&#25442;&#31867;&#22411;&#26631;&#35782;</span>&#37117;&#19981;&#33021;&#20195;&#34920;&#25968;&#32452;&#25110;&#20989;&#25968;&#31867;&#22411;&#12290;</p>
<p>&#23613;&#31649;&#29992;&#25143;&#23450;&#20041;&#30340;&#36716;&#25442;&#20989;&#25968;&#30340;&#22768;&#26126;&#20013;&#19981;&#33021;&#20986;&#29616;&#36820;&#22238;&#31867;&#22411;&#65292;&#19981;&#36807;<a href="cpp-language-declarations.html#.E8.AF.B4.E6.98.8E.E7.AC.A6">&#22768;&#26126;&#30340;&#25991;&#27861;</a>&#20013;&#30340; <span class="t-spar">&#22768;&#26126;&#35828;&#26126;&#31526;&#24207;&#21015;</span>&#21487;&#20197;&#23384;&#22312;&#24182;&#21487;&#21253;&#21547;&#38500;&#20102; <span class="t-spar">&#31867;&#22411;&#35828;&#26126;&#31526;</span> &#25110;&#20851;&#38190;&#35789; <code>static</code> &#20043;&#22806;&#30340;&#20219;&#20309;&#35828;&#26126;&#31526;&#12290;&#23588;&#20854;&#26159;&#65292;&#23427;&#19981;&#20165;&#20801;&#35768; <code>explicit</code>&#65292;&#20063;&#20801;&#35768;&#35828;&#26126;&#31526; <a href="cpp-language-inline.html"><code>inline</code></a>&#12289;<a href="cpp-language-virtual.html"><code>virtual</code></a><span class="t-rev-inl t-since-cxx11"><span>&#12289;<a href="cpp-language-constexpr.html"><code>constexpr</code></a></span> <span><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></span></span><span class="t-rev-inl t-since-cxx20"><span>&#12289;<a href="cpp-language-consteval.html"><code>consteval</code></a></span> <span><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></span></span> &#21450; <a href="cpp-language-friend.html"><code>friend</code></a>&#65288;&#27880;&#24847; <code>friend</code> &#35201;&#27714;&#26377;&#38480;&#23450;&#21517;&#65306;<code>friend A::operator B();</code>&#65289;&#12290;</p>
<p>&#22914;&#26524;&#22312;&#31867; X &#20013;&#22768;&#26126;&#36825;&#31181;&#25104;&#21592;&#20989;&#25968;&#65292;&#37027;&#20040;&#23427;&#20250;&#36827;&#34892;&#20174; X &#21040; <span class="t-spar">&#36716;&#25442;&#31867;&#22411;&#26631;&#35782;</span> &#30340;&#36716;&#25442;&#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> X <span class="br0">{</span>
<span class="co1">// &#38544;&#24335;&#36716;&#25442;</span>
operator <span class="kw4">int</span><span class="br0">(</span><span class="br0">)</span> <span class="kw4">const</span> <span class="br0">{</span> <span class="kw1">return</span> <span class="nu0">7</span><span class="sy4">;</span> <span class="br0">}</span>
<span class="co1">// &#26174;&#24335;&#36716;&#25442;</span>
<span class="kw1">explicit</span> operator <span class="kw4">int</span><span class="sy2">*</span><span class="br0">(</span><span class="br0">)</span> <span class="kw4">const</span> <span class="br0">{</span> <span class="kw1">return</span> nullptr<span class="sy4">;</span> <span class="br0">}</span>
<span class="co1">// &#38169;&#35823;&#65306;&#36716;&#25442;&#31867;&#22411;&#26631;&#35782;&#20013;&#19981;&#20801;&#35768;&#20986;&#29616;&#25968;&#32452;&#36816;&#31639;&#31526;</span>
<span class="co1">// operator int(*)[3]() const { return nullptr; }</span>
<span class="kw1">using</span> arr_t <span class="sy1">=</span> <span class="kw4">int</span><span class="br0">[</span><span class="nu0">3</span><span class="br0">]</span><span class="sy4">;</span>
operator arr_t<span class="sy2">*</span><span class="br0">(</span><span class="br0">)</span> <span class="kw4">const</span> <span class="br0">{</span> <span class="kw1">return</span> nullptr<span class="sy4">;</span> <span class="br0">}</span> <span class="co1">// &#21487;&#20197;&#36890;&#36807; typedef &#36716;&#25442;</span>
<span class="co1">// operator arr_t () const; // &#38169;&#35823;&#65306;&#19981;&#20801;&#35768;&#22312;&#20219;&#20309;&#24773;&#20917;&#19979;&#36716;&#25442;&#21040;&#25968;&#32452;</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>
X x<span class="sy4">;</span>
<span class="kw4">int</span> n <span class="sy1">=</span> <span class="kw1">static_cast</span><span class="sy1">&lt;</span><span class="kw4">int</span><span class="sy1">&gt;</span><span class="br0">(</span>x<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// OK&#65306;&#35774; n &#20026; 7</span>
<span class="kw4">int</span> m <span class="sy1">=</span> x<span class="sy4">;</span> <span class="co1">// OK&#65306;&#35774; m &#20026; 7</span>
<span class="kw4">int</span><span class="sy2">*</span> p <span class="sy1">=</span> <span class="kw1">static_cast</span><span class="sy1">&lt;</span><span class="kw4">int</span><span class="sy2">*</span><span class="sy1">&gt;</span><span class="br0">(</span>x<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// OK&#65306;&#35774; p &#20026;&#31354;</span>
<span class="co1">// int* q = x; // &#38169;&#35823;&#65306;&#27809;&#26377;&#38544;&#24335;&#36716;&#25442;</span>
<span class="kw4">int</span> <span class="br0">(</span><span class="sy2">*</span>pa<span class="br0">)</span><span class="br0">[</span><span class="nu0">3</span><span class="br0">]</span> <span class="sy1">=</span> x<span class="sy4">;</span> <span class="co1">// OK</span>
<span class="br0">}</span></pre></div>
</div>
<h3><span class="mw-headline" id=".E8.A7.A3.E9.87.8A">&#35299;&#37322;</span></h3>
<p>&#29992;&#25143;&#23450;&#20041;&#30340;&#36716;&#25442;&#20989;&#25968;&#22312;<a href="cpp-language-implicit_conversion.html">&#38544;&#24335;&#36716;&#25442;</a>&#30340;&#31532;&#20108;&#38454;&#27573;&#34987;&#35843;&#29992;&#65292;&#31532;&#20108;&#38454;&#27573;&#30001;<b>&#38646;&#25110;&#19968;&#20010;<a href="cpp-language-converting_constructor.html">&#36716;&#25442;&#26500;&#36896;&#20989;&#25968;</a></b>&#25110;<b>&#38646;&#25110;&#19968;&#20010;&#29992;&#25143;&#23450;&#20041;&#36716;&#25442;&#20989;&#25968;</b>&#26500;&#25104;&#12290;</p>
<p>&#22914;&#26524;&#36716;&#25442;&#20989;&#25968;&#21644;&#36716;&#25442;&#26500;&#36896;&#20989;&#25968;&#37117;&#33021;&#29992;&#20110;&#36827;&#34892;&#26576;&#20010;&#29992;&#25143;&#23450;&#20041;&#36716;&#25442;&#65292;&#37027;&#20040;<a href="cpp-language-copy_initialization.html">&#22797;&#21046;&#21021;&#22987;&#21270;</a>&#21644;<a href="cpp-language-reference_initialization.html">&#24341;&#29992;&#21021;&#22987;&#21270;</a>&#35821;&#22659;&#20013;&#30340;<a href="cpp-language-overload_resolution.html">&#37325;&#36733;&#20915;&#35758;</a>&#21516;&#26102;&#32771;&#34385;&#36716;&#25442;&#20989;&#25968;&#21644;&#36716;&#25442;&#26500;&#36896;&#20989;&#25968;&#65292;&#20294;&#22312;<a href="cpp-language-direct_initialization.html">&#30452;&#25509;&#21021;&#22987;&#21270;</a>&#35821;&#22659;&#20013;&#21482;&#32771;&#34385;&#36716;&#25442;&#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">struct</span> To <span class="br0">{</span>
To<span class="br0">(</span><span class="br0">)</span> <span class="sy1">=</span> <span class="kw1">default</span><span class="sy4">;</span>
To<span class="br0">(</span><span class="kw4">const</span> <span class="kw1">struct</span> From<span class="sy3">&amp;</span><span class="br0">)</span> <span class="br0">{</span><span class="br0">}</span> <span class="co1">// &#36716;&#25442;&#26500;&#36896;&#20989;&#25968;</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> From <span class="br0">{</span>
operator To<span class="br0">(</span><span class="br0">)</span> <span class="kw4">const</span> <span class="br0">{</span><span class="kw1">return</span> To<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span><span class="br0">}</span> <span class="co1">// &#36716;&#25442;&#20989;&#25968;</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>
From f<span class="sy4">;</span>
To t1<span class="br0">(</span>f<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#30452;&#25509;&#21021;&#22987;&#21270;&#65306;&#35843;&#29992;&#26500;&#36896;&#20989;&#25968;</span>
<span class="co1">// &#65288;&#27880;&#24847;&#65292;&#22914;&#26524;&#36716;&#25442;&#26500;&#36896;&#20989;&#25968;&#19981;&#21487;&#29992;&#65292;&#37027;&#20040;&#20250;&#36873;&#25321;&#38544;&#24335;&#30340;&#22797;&#21046;&#26500;&#36896;&#20989;&#25968;&#65292;&#19988;&#35843;&#29992;&#36716;&#25442;&#20989;&#25968;&#20197;&#20934;&#22791;&#20854;&#21442;&#25968;&#65289;</span>
To t2 <span class="sy1">=</span> f<span class="sy4">;</span> <span class="co1">// &#22797;&#21046;&#21021;&#22987;&#21270;&#65306;&#26377;&#27495;&#20041;</span>
<span class="co1">// &#65288;&#27880;&#24847;&#65292;&#22914;&#26524;&#36716;&#25442;&#20989;&#25968;&#26469;&#33258;&#38750; const &#31867;&#22411;&#65292;&#20363;&#22914; From::operator To(); </span>
<span class="co1">// &#37027;&#20040;&#23427;&#22312;&#36825;&#31181;&#24773;&#20917;&#19979;&#20250;&#26367;&#20195;&#26500;&#36896;&#20989;&#25968;&#34987;&#36873;&#20013;&#65289;</span>
To t3 <span class="sy1">=</span> <span class="kw1">static_cast</span><span class="sy1">&lt;</span>To<span class="sy1">&gt;</span><span class="br0">(</span>f<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#30452;&#25509;&#21021;&#22987;&#21270;&#65306;&#35843;&#29992;&#26500;&#36896;&#20989;&#25968;</span>
<span class="kw4">const</span> To<span class="sy3">&amp;</span> r <span class="sy1">=</span> f<span class="sy4">;</span> <span class="co1">// &#24341;&#29992;&#21021;&#22987;&#21270;&#65306;&#26377;&#27495;&#20041;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#21487;&#20197;&#23450;&#20041;&#36716;&#25442;&#21040;&#20854;&#65288;&#21487;&#26377; cv &#38480;&#23450;&#30340;&#65289;&#33258;&#36523;&#31867;&#65288;&#25110;&#20854;&#24341;&#29992;&#65289;&#65292;&#36716;&#25442;&#21040;&#20854;&#33258;&#36523;&#31867;&#30340;&#22522;&#31867;&#65288;&#25110;&#20854;&#24341;&#29992;&#65289;&#65292;&#21644;&#36716;&#25442;&#21040;&#31867;&#22411; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">void</span></span></span> &#30340;&#36716;&#25442;&#20989;&#25968;&#65292;&#20294;&#23427;&#26080;&#27861;&#20316;&#20026;&#36716;&#25442;&#24207;&#21015;&#30340;&#19968;&#37096;&#20998;&#25191;&#34892;&#65292;&#38500;&#38750;&#22312;&#26576;&#20123;&#24773;&#20917;&#19979;&#36890;&#36807;<a href="cpp-language-virtual.html">&#34394;</a>&#27966;&#21457;&#26469;&#25191;&#34892;&#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> D<span class="sy4">;</span>
<span class="kw1">struct</span> B <span class="br0">{</span>
<span class="kw1">virtual</span> operator D<span class="br0">(</span><span class="br0">)</span> <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> D <span class="sy4">:</span> B
<span class="br0">{</span>
operator D<span class="br0">(</span><span class="br0">)</span> override <span class="br0">{</span> <span class="kw1">return</span> D<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</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 obj<span class="sy4">;</span>
D obj2 <span class="sy1">=</span> obj<span class="sy4">;</span> <span class="co1">// &#19981;&#35843;&#29992; D::operator D()</span>
B<span class="sy3">&amp;</span> br <span class="sy1">=</span> obj<span class="sy4">;</span>
D obj3 <span class="sy1">=</span> br<span class="sy4">;</span> <span class="co1">// &#36890;&#36807;&#34394;&#27966;&#21457;&#35843;&#29992; D::operator D() </span>
<span class="br0">}</span></pre></div>
</div>
<p>&#23427;&#20063;&#33021;&#29992;&#25104;&#21592;&#20989;&#25968;&#35843;&#29992;&#35821;&#27861;&#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="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> X <span class="sy4">:</span> B <span class="br0">{</span>
operator B<span class="sy3">&amp;</span><span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">return</span> <span class="sy2">*</span>this<span class="sy4">;</span> <span class="br0">}</span><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>
X x<span class="sy4">;</span>
B<span class="sy3">&amp;</span> b1 <span class="sy1">=</span> x<span class="sy4">;</span> <span class="co1">// &#19981;&#35843;&#29992; X::operatorB&amp;()</span>
B<span class="sy3">&amp;</span> b2 <span class="sy1">=</span> <span class="kw1">static_cast</span><span class="sy1">&lt;</span>B<span class="sy3">&amp;</span><span class="sy1">&gt;</span><span class="br0">(</span>x<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#19981;&#35843;&#29992; X::operatorB&amp;</span>
B<span class="sy3">&amp;</span> b3 <span class="sy1">=</span> x.<span class="me1">operator</span> B<span class="sy3">&amp;</span><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; X::operatorB&amp;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#26174;&#24335;&#35843;&#29992;&#36716;&#25442;&#20989;&#25968;&#26102;&#65292;<span class="t-spar">&#31867;&#22411;&#26631;&#35782;</span> &#26159;&#36138;&#24515;&#30340;&#65306;&#23427;&#26159;&#21487;&#20316;&#20026;&#21512;&#27861; <span class="t-spar">&#31867;&#22411;&#26631;&#35782;</span> &#30340;&#26368;&#38271;&#21487;&#33021;&#30340;&#35760;&#21495;&#24207;&#21015;&#65288;&#21253;&#25324;&#23646;&#24615;&#65292;&#22914;&#26524;&#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="sy3">&amp;</span> x.<span class="me1">operator</span> <span class="kw4">int</span> <span class="sy2">*</span> a<span class="sy4">;</span> <span class="co1">// &#20998;&#26512;&#20026; &amp; (x.operator int*) a</span>
<span class="co1">// &#32780;&#38750; &amp; (x.operator int) * a</span></pre></div>
</div>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx14">
<td>
<p><span class="t-spar">&#36716;&#25442;&#31867;&#22411;&#26631;&#35782;</span> &#20013;&#21487;&#20197;&#20351;&#29992;&#21344;&#20301;&#31526; <a href="cpp-language-auto.html">auto</a>&#65292;&#20197;&#25351;&#23450;&#19968;&#20010;<a href="cpp-language-function.html#.E8.BF.94.E5.9B.9E.E7.B1.BB.E5.9E.8B.E6.8E.A8.E5.AF.BC">&#25512;&#23548;&#30340;&#36820;&#22238;&#31867;&#22411;</a>&#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> X <span class="br0">{</span>
operator <span class="kw4">int</span><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// OK</span>
operator <span class="kw4">auto</span><span class="br0">(</span><span class="br0">)</span> <span class="sy2">-</span><span class="sy1">&gt;</span> <span class="kw4">short</span><span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306;&#23614;&#38543;&#36820;&#22238;&#31867;&#22411;&#19981;&#26159;&#27492;&#31867;&#35821;&#27861;&#30340;&#19968;&#37096;&#20998;</span>
operator <span class="kw4">auto</span><span class="br0">(</span><span class="br0">)</span> <span class="kw4">const</span> <span class="br0">{</span> <span class="kw1">return</span> <span class="nu0">10</span><span class="sy4">;</span> <span class="br0">}</span> <span class="co1">// OK&#65306;&#25512;&#23548;&#30340;&#36820;&#22238;&#31867;&#22411;</span>
<span class="br0">}</span><span class="sy4">;</span></pre></div>
</div>
<p>&#27880;&#24847;&#65306;<a href="cpp-language-member_template.html#.E8.BD.AC.E6.8D.A2.E5.87.BD.E6.95.B0.E6.A8.A1.E6.9D.BF">&#36716;&#25442;&#20989;&#25968;&#27169;&#26495;</a>&#19981;&#20801;&#35768;&#20855;&#26377;&#25512;&#23548;&#30340;&#36820;&#22238;&#31867;&#22411;&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-cxx14">(C++14 &#36215;)</span></td>
</tr>
</table>
<p>&#36716;&#25442;&#20989;&#25968;&#21487;&#20197;&#32487;&#25215;&#32780;&#19988;&#21487;&#20197;&#26159;<a href="cpp-language-virtual.html">&#34394;&#20989;&#25968;</a>&#65292;&#20294;&#19981;&#33021;&#26159;<a href="cpp-language-static.html">&#38745;&#24577;&#20989;&#25968;</a>&#12290;&#27966;&#29983;&#31867;&#20013;&#30340;&#36716;&#25442;&#20989;&#25968;&#19981;&#20250;&#38544;&#34255;&#22522;&#31867;&#20013;&#30340;&#36716;&#25442;&#20989;&#25968;&#65292;&#38500;&#38750;&#23427;&#20204;&#36716;&#25442;&#21040;&#21516;&#19968;&#31867;&#22411;&#12290;</p>
<p>&#36716;&#25442;&#20989;&#25968;&#21487;&#20197;&#26159;&#27169;&#26495;&#25104;&#21592;&#20989;&#25968;&#65292;&#20363;&#22914; <a href="cpp-memory-auto_ptr-operator_auto_ptr.html">std::auto_ptr&lt;T&gt;::operator auto_ptr&lt;Y&gt;</a>&#12290;&#20854;&#36866;&#29992;&#30340;&#29305;&#27530;&#35268;&#21017;&#21442;&#38405;<a href="cpp-language-member_template.html#.E8.BD.AC.E6.8D.A2.E5.87.BD.E6.95.B0.E6.A8.A1.E6.9D.BF">&#25104;&#21592;&#27169;&#26495;</a>&#21644;<a href="cpp-language-template_argument_deduction.html#.E8.BD.AC.E6.8D.A2.E5.87.BD.E6.95.B0.E6.A8.A1.E6.9D.BF">&#27169;&#26495;&#23454;&#21442;&#25512;&#23548;</a>&#12290;</p>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>