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

69 lines
14 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>&#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_functions skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">&#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>&#20989;&#25968;&#65288;function&#65289;&#26159;&#25226;&#19968;&#20010;<a href="cpp-language-statements.html">&#35821;&#21477;</a>&#24207;&#21015;&#65288;<i>&#20989;&#25968;&#20307;, function body</i>&#65289;&#20851;&#32852;&#21040;&#19968;&#20010;<i>&#21517;&#23383;</i>&#21644;&#38646;&#25110;&#26356;&#22810;&#20010;<i>&#20989;&#25968;&#24418;&#21442;&#65288;function parameter&#65289;</i>&#30340;&#21015;&#34920;&#30340; C++ &#23454;&#20307;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co1">// &#20989;&#25968;&#21517;&#65306;&ldquo;isodd&rdquo;</span>
<span class="co1">// &#24418;&#21442;&#21015;&#34920;&#25317;&#26377;&#19968;&#20010;&#24418;&#21442;&#65292;&#20855;&#26377;&#21517;&#23383; &ldquo;n&rdquo; &#21644;&#31867;&#22411; int</span>
<span class="co1">// &#36820;&#22238;&#31867;&#22411;&#26159; bool</span>
<span class="kw4">bool</span> isodd<span class="br0">(</span><span class="kw4">int</span> n<span class="br0">)</span>
<span class="br0">{</span> <span class="co1">// &#20989;&#25968;&#20307;&#24320;&#22987;</span>
<span class="kw1">return</span> n <span class="sy2">%</span> <span class="nu0">2</span><span class="sy4">;</span>
<span class="br0">}</span> <span class="co1">// &#20989;&#25968;&#20307;&#32467;&#26463;</span></pre></div>
</div>
<p>&#35843;&#29992;&#20989;&#25968;&#26102;&#65292;&#20363;&#22914;&#22312;<a href="cpp-language-operator_other.html#.E5.86.85.E5.BB.BA.E5.87.BD.E6.95.B0.E8.B0.83.E7.94.A8.E8.BF.90.E7.AE.97.E7.AC.A6">&#20989;&#25968;&#35843;&#29992;&#34920;&#36798;&#24335;</a>&#20013;&#65292;&#20197;&#21508;&#20010;<i>&#23454;&#21442;&#65288;argument&#65289;</i>&#65288;&#21487;&#30001;&#35843;&#29992;&#22330;&#25152;&#25552;&#20379;&#65292;&#25110;&#32773;<a href="cpp-language-default_arguments.html">&#40664;&#35748;</a>&#65289;&#26469;&#21021;&#22987;&#21270;&#21508;&#20010;&#24418;&#21442;&#65292;&#28982;&#21518;&#25191;&#34892;&#20989;&#25968;&#20307;&#20013;&#30340;&#35821;&#21477;&#12290;&#22914;&#26524;&#19968;&#20010;&#20989;&#25968;&#30340;<a href="cpp-language-function.html#.E5.BD.A2.E5.8F.82.E5.88.97.E8.A1.A8">&#24418;&#21442;&#21015;&#34920;</a>&#20197; <span class="t-c"><span class="mw-geshi cpp source-cpp">...</span></span> &#32467;&#23614;&#65292;&#37027;&#20040;&#39069;&#22806;&#30340;&#23454;&#21442;&#21487;&#20197;&#25552;&#20379;&#32473;&#35813;&#20989;&#25968;&#65292;&#36825;&#26679;&#30340;&#20989;&#25968;&#34987;&#31216;&#20026;<a href="cpp-language-variadic_arguments.html">&#21464;&#21442;&#20989;&#25968;</a>&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
<span class="kw1">for</span><span class="br0">(</span><span class="kw4">int</span> arg <span class="sy4">:</span> <span class="br0">{</span><span class="sy2">-</span><span class="nu0">3</span>, <span class="sy2">-</span><span class="nu0">2</span>, <span class="sy2">-</span><span class="nu0">1</span>, <span class="nu0">0</span>, <span class="nu0">1</span>, <span class="nu0">2</span>, <span class="nu0">3</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> isodd<span class="br0">(</span>arg<span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39; &#39;</span><span class="sy4">;</span> <span class="co1">// isodd &#34987;&#35843;&#29992; 7 &#27425;&#65292;</span>
<span class="co1">// &#27599;&#27425;&#20174; arg &#22797;&#21046;&#21021;&#22987;&#21270; n</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#20989;&#25968;&#35843;&#29992;&#34920;&#36798;&#24335;&#20013;<a href="cpp-language-unqualified_lookup.html">&#26080;&#38480;&#23450;</a>&#30340;&#20989;&#25968;&#21517;&#20250;&#20197;&#19968;&#32452;&#39069;&#22806;&#30340;&#35268;&#21017;&#26597;&#25214;&#65292;&#23427;&#34987;&#31216;&#20026;<a href="cpp-language-adl.html">&ldquo;&#23454;&#21442;&#20381;&#36182;&#26597;&#25214;&rdquo;&#65288;argument-dependent lookup/ADL&#65289;</a>&#12290;</p>
<p>&#20989;&#25968;&#21487;&#20197;&#36890;&#36807;<a href="cpp-language-return.html">&#36820;&#22238;</a>&#25110;&#32773;<a href="cpp-language-throw.html">&#25243;&#20986;</a><a href="cpp-language-exceptions.html">&#24322;&#24120;</a>&#32456;&#27490;&#12290;</p>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx20">
<td>
<p>&#20989;&#25968;&#21487;&#20197;&#26159;<a href="cpp-language-coroutines.html">&#21327;&#31243;</a>&#12290;&#21327;&#31243;&#21487;&#20197;&#26242;&#20572;&#25191;&#34892;&#65292;&#20197;&#22312;&#20043;&#21518;&#24674;&#22797;&#25191;&#34892;&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></td>
</tr>
</table>
<p><a href="cpp-language-function.html">&#20989;&#25968;&#22768;&#26126;</a>&#21487;&#20197;&#22312;&#20219;&#20309;&#20316;&#29992;&#22495;&#20013;&#20986;&#29616;&#65292;&#20294;<a href="cpp-language-function.html">&#20989;&#25968;&#23450;&#20041;</a>&#21482;&#33021;&#22312;&#21629;&#21517;&#31354;&#38388;&#20316;&#29992;&#22495;&#20986;&#29616;&#65292;&#25110;&#23545;&#20110;<a href="cpp-language-member_functions.html">&#25104;&#21592;</a>&#21644;<a href="cpp-language-friend.html">&#21451;&#20803;</a>&#20989;&#25968;&#65292;&#21487;&#20197;&#22312;&#31867;&#20316;&#29992;&#22495;&#20013;&#20986;&#29616;&#12290;&#22312;&#31867;&#20307;&#20013;&#22768;&#26126;&#32780;&#19981;&#24102; friend &#35828;&#26126;&#31526;&#30340;&#20989;&#25968;&#26159;&#31867;&#25104;&#21592;&#20989;&#25968;&#12290;&#36825;&#31181;&#20989;&#25968;&#25317;&#26377;&#35768;&#22810;&#38468;&#21152;&#24615;&#36136;&#65292;&#32454;&#33410;&#35265;<a href="cpp-language-member_functions.html">&#25104;&#21592;&#20989;&#25968;</a>&#12290;</p>
<p>&#20989;&#25968;&#19981;&#26159;&#23545;&#35937;&#65306;&#19981;&#23384;&#22312;&#20989;&#25968;&#30340;&#25968;&#32452;&#65292;&#32780;&#19988;&#20989;&#25968;&#19981;&#33021;&#25353;&#20540;&#20256;&#36882;&#25110;&#34987;&#20854;&#20182;&#20989;&#25968;&#25152;&#36820;&#22238;&#12290;&#21487;&#20197;&#26377;&#25351;&#21521;/&#21040;&#38500;<a href="cpp-language-main_function.html">&#20027;&#20989;&#25968;</a>&#20197;&#22806;&#30340;<span class="t-rev-inl t-until-cxx20"><span>&#25152;&#26377;&#20989;&#25968;</span> <span><span class="t-mark-rev t-until-cxx20">(C++20 &#21069;)</span></span></span><span class="t-rev-inl t-since-cxx20"><span>&#25152;&#26377;&#38750;&#26631;&#20934;&#24211;&#20989;&#25968;&#21644;<a href="cpp-language-extending_std.html#.E5.8F.AF.E5.8F.96.E5.9D.80.E5.87.BD.E6.95.B0">&#20960;&#20010;&#26631;&#20934;&#24211;&#20989;&#25968;</a></span> <span><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></span></span>&#30340;&#25351;&#38024;&#21644;&#24341;&#29992;&#65292;&#23427;&#20204;&#21487;&#20197;&#29992;&#20110;&#36825;&#20123;&#20989;&#25968;&#33258;&#36523;&#26080;&#27861;&#34987;&#20351;&#29992;&#30340;&#22320;&#26041;&#12290;&#22240;&#27492;&#25105;&#20204;&#35828;&#36825;&#20123;&#20989;&#25968;&ldquo;&#21487;&#21462;&#22336;&rdquo;&#12290;</p>
<p>&#27599;&#20010;&#20989;&#25968;&#37117;&#20855;&#26377;&#19968;&#20010;&#31867;&#22411;&#65292;&#23427;&#30001;&#20989;&#25968;&#30340;&#36820;&#22238;&#31867;&#22411;&#65292;&#25152;&#26377;&#24418;&#21442;&#30340;&#31867;&#22411;&#65288;&#36827;&#34892;&#25968;&#32452;&#21040;&#25351;&#38024;&#21644;&#20989;&#25968;&#21040;&#25351;&#38024;&#36716;&#25442;&#21518;&#65292;&#35265;<a href="cpp-language-function.html#.E5.BD.A2.E5.8F.82.E5.88.97.E8.A1.A8">&#24418;&#21442;&#21015;&#34920;</a>&#65289;<span class="t-rev-inl t-since-cxx17"><span>&#65292;&#20989;&#25968;&#26159;&#21542;&#20026; <a href="cpp-language-noexcept_spec.html"><code>noexcept</code></a></span> <span><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></span></span>&#65292;&#20197;&#21450;&#23545;&#20110;&#38750;&#38745;&#24577;&#25104;&#21592;&#20989;&#25968;&#30340; cv &#38480;&#23450;&#24615;<span class="t-rev-inl t-since-cxx11"><span>&#21644;&#24341;&#29992;&#38480;&#23450;&#24615;</span> <span><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></span></span>&#26500;&#25104;&#12290;&#20989;&#25968;&#31867;&#22411;&#21516;&#26679;&#25317;&#26377;<a href="cpp-language-language_linkage.html">&#35821;&#35328;&#38142;&#25509;</a>&#12290;&#19981;&#23384;&#22312;&#26377; cv &#38480;&#23450;&#30340;&#20989;&#25968;&#31867;&#22411;&#65288;&#19981;&#35201;&#19982;&#22914; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">int</span> f<span class="br0">(</span><span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></span> &#36825;&#26679;&#30340; <a href="cpp-language-member_functions.html">cv &#38480;&#23450;&#20989;&#25968;</a>&#31867;&#22411;&#65292;&#25110;&#22914; <span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a> <span class="kw4">const</span> f<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span></span></span> &#36825;&#26679;&#30340;&#36820;&#22238; <a href="cpp-language-cv.html">cv &#38480;&#23450;&#31867;&#22411;</a>&#30340;&#20989;&#25968;&#30456;&#28151;&#28102;&#65289;&#12290;&#22914;&#26524;&#26377;&#20219;&#20309; cv &#38480;&#23450;&#31526;&#34987;&#28155;&#21152;&#21040;&#21040;&#20989;&#25968;&#31867;&#22411;&#30340;&#21035;&#21517;&#65292;&#37027;&#20040;&#23427;&#20250;&#34987;&#24573;&#30053;&#12290;</p>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx11">
<td>
<p>&#21487;&#20197;&#29992; <a href="cpp-language-lambda.html">lambda &#34920;&#36798;&#24335;</a>&#20135;&#29983;&#26080;&#21517;&#20989;&#25968;&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></td>
</tr>
</table>
<p>&#21516;&#19968;&#20316;&#29992;&#22495;&#20013;&#65292;&#21487;&#20197;&#26377;&#22810;&#20010;&#20989;&#25968;&#25317;&#26377;&#30456;&#21516;&#30340;&#21517;&#31216;&#65292;&#21482;&#35201;&#20854;&#24418;&#21442;&#21015;&#34920;&#65292;&#20197;&#21450;&#23545;&#20110;&#38750;&#38745;&#24577;&#25104;&#21592;&#20989;&#25968;&#30340; cv <span class="t-rev-inl t-since-cxx11"><span>&#25110;&#24341;&#29992;</span> <span><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></span></span>&#38480;&#23450;&#19981;&#21516;&#21363;&#21487;&#12290;&#36825;&#34987;&#31216;&#20316;<a href="cpp-language-overload_resolution.html">&#20989;&#25968;&#37325;&#36733;</a>&#12290;&#21482;&#26377;&#36820;&#22238;&#31867;&#22411;<span class="t-rev-inl t-since-cxx17"><span>&#21450; noexcept &#35828;&#26126;</span> <span><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></span></span>&#19981;&#21516;&#30340;&#20989;&#25968;&#22768;&#26126;&#20043;&#38388;&#26080;&#27861;&#37325;&#36733;&#12290;<a href="cpp-language-overloaded_address.html">&#37325;&#36733;&#20989;&#25968;&#30340;&#22320;&#22336;</a>&#26377;&#19987;&#38376;&#30340;&#30830;&#23450;&#26041;&#27861;&#12290;</p>
<h3><span class="mw-headline" id=".E5.87.BD.E6.95.B0.E5.AF.B9.E8.B1.A1">&#20989;&#25968;&#23545;&#35937;</span></h3>
<p>&#38500;&#20102;&#20989;&#25968;&#24038;&#20540;&#65292;&#20989;&#25968;&#35843;&#29992;&#34920;&#36798;&#24335;&#36824;&#25903;&#25345;&#20989;&#25968;&#25351;&#38024;&#20197;&#21450;&#37325;&#36733;&#20102;&#20989;&#25968;&#35843;&#29992;&#36816;&#31639;&#31526;&#21450;&#21487;&#36716;&#25442;&#20026;&#20989;&#25968;&#25351;&#38024;&#30340;&#20219;&#20309;&#31867;&#31867;&#22411;&#30340;&#20540;<span class="t-rev-inl t-since-cxx11"><span>&#65288;&#21253;&#25324; <a href="cpp-language-lambda.html">lambda &#34920;&#36798;&#24335;</a>&#65289;</span> <span><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></span></span>&#12290;&#36825;&#20123;&#31867;&#22411;&#34987;&#32479;&#31216;&#20026;<a href="cpp-named_req-FunctionObject.html"><span style="font-style:italic">&#20989;&#25968;&#23545;&#35937;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(FunctionObject)</span></a> &#65292;&#32780;&#19988;&#22312; C++ &#26631;&#20934;&#24211;&#20013;&#30340;&#21508;&#22788;&#37117;&#26377;&#20351;&#29992;&#65292;&#31034;&#20363;&#21487;&#35265;<a href="cpp-named_req-BinaryPredicate.html"><span style="font-style:italic">&#20108;&#20803;&#35859;&#35789;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(BinaryPredicate)</span></a> &#21644;<a href="cpp-named_req-Compare.html"><span style="font-style:italic">&#27604;&#36739;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(Compare)</span></a> &#30340;&#29992;&#27861;&#12290;</p>
<p>&#26631;&#20934;&#24211;&#20063;&#25552;&#20379;&#25968;&#20010;&#39044;&#23450;&#20041;&#30340;<a href="cpp-utility-functional.html">&#20989;&#25968;&#23545;&#35937;&#27169;&#26495;</a>&#65292;&#20197;&#21450;&#19968;&#20123;&#32452;&#25104;&#26032;&#20989;&#25968;&#23545;&#35937;&#30340;&#26041;&#27861;&#65288;&#21253;&#25324; <span class="t-lc"><a href="cpp-utility-functional-less.html">std::less</a></span><span class="t-rev-inl t-since-cxx11"><span>&#12289;<span class="t-lc"><a href="cpp-utility-functional-mem_fn.html">std::mem_fn</a></span>&#12289;<span class="t-lc"><a href="cpp-utility-functional-bind.html">std::bind</a></span> &#21644; <span class="t-lc"><a href="cpp-utility-functional-function.html">std::function</a></span></span> <span><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></span></span>&#65289;&#12290;</p>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>