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

131 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>&#31867;</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_classes skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">&#31867;</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>&#31867;&#26159;&#19968;&#31181;&#29992;&#25143;&#23450;&#20041;&#31867;&#22411;&#12290;</p>
<p>&#31867;&#30340;&#31867;&#22411;&#21487;&#20197;&#30001;&#31867;&#35828;&#26126;&#31526;&#23450;&#20041;&#65292;&#23427;&#22312;<a href="cpp-language-declarations.html">&#22768;&#26126;</a>&#35821;&#27861;&#30340; <span class="t-spar">&#22768;&#26126;&#35828;&#26126;&#31526;&#24207;&#21015;</span> &#20013;&#20986;&#29616;&#12290;&#31867;&#35828;&#26126;&#31526;&#25317;&#26377;&#19979;&#21015;&#35821;&#27861;&#65306;</p>
<table class="t-sdsc-begin">
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><span class="t-spar">&#31867;&#20851;&#38190;&#35789;</span> <span class="t-spar">&#23646;&#24615;</span> <span class="t-spar">&#31867;&#22836;&#21517;</span> <code><b>{</b></code> <span class="t-spar">&#25104;&#21592;&#35828;&#26126;</span> <code><b>}</b></code></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><span class="t-spar">&#31867;&#20851;&#38190;&#35789;</span> <span class="t-spar">&#23646;&#24615;</span> <span class="t-spar">&#31867;&#22836;&#21517;</span> <code><b>:</b></code> <span class="t-spar">&#22522;&#31867;&#35828;&#26126;&#31526;&#24207;&#21015;</span> <code><b>{</b></code> <span class="t-spar">&#25104;&#21592;&#35828;&#26126;</span> <code><b>}</b></code></td>
<td>(2)</td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
</table>
<table class="t-par-begin">
<tr class="t-par">
<td><span class="t-spar">&#31867;&#20851;&#38190;&#35789;</span></td>
<td>-</td>
<td><a href="cpp-keyword-class.html"><tt>class</tt></a>&#12289;<a href="cpp-keyword-struct.html"><tt>struct</tt></a>&#12289;<a href="cpp-keyword-union.html"><tt>union</tt></a> &#20043;&#19968;</td>
</tr>
<tr class="t-par">
<td><span class="t-spar">&#23646;&#24615;</span></td>
<td>-</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span> &#21487;&#36873;&#30340;&#20219;&#24847;&#25968;&#37327;&#30340;<a href="cpp-language-attributes.html">&#23646;&#24615;</a>&#24207;&#21015;</td>
</tr>
<tr class="t-par">
<td><span class="t-spar">&#31867;&#22836;&#21517;</span></td>
<td>-</td>
<td>&#34987;&#23450;&#20041;&#30340;&#31867;&#21517;&#12290;&#21487;&#20197;&#21069;&#25509; <span class="t-spar">&#23884;&#22871;&#21517;&#35828;&#26126;&#31526;</span>&#65288;&#21517;&#23383;&#21644;&#20316;&#29992;&#22495;&#35299;&#26512;&#36816;&#31639;&#31526;&#30340;&#24207;&#21015;&#65292;&#20197;&#20316;&#29992;&#22495;&#35299;&#26512;&#36816;&#31639;&#31526;&#32467;&#23614;&#65289;&#65292;&#21487;&#20197;&#21518;&#38543;&#20851;&#38190;&#35789; <a href="cpp-keyword-final.html"><tt>final</tt></a>&#12290;&#21487;&#20197;&#24573;&#30053;&#35813;&#21517;&#23383;&#65292;&#27492;&#26102;&#31867;&#26159;&#26080;&#21517;&#30340;&#65288;&#27880;&#24847;&#26080;&#21517;&#31867;&#19981;&#21487;&#20197;&#26159; final &#30340;&#65289;</td>
</tr>
<tr class="t-par">
<td><span class="t-spar">&#22522;&#31867;&#35828;&#26126;&#31526;&#24207;&#21015;</span></td>
<td>-</td>
<td>&#19968;&#20010;&#25110;&#22810;&#20010;&#29238;&#31867;&#21450;&#20854;&#21508;&#33258;&#25152;&#29992;&#30340;&#32487;&#25215;&#27169;&#22411;&#30340;&#21015;&#34920;&#65288;&#35265;<a href="cpp-language-derived_class.html">&#27966;&#29983;&#31867;</a>&#65289;</td>
</tr>
<tr class="t-par">
<td><span class="t-spar">&#25104;&#21592;&#35828;&#26126;</span></td>
<td>-</td>
<td>&#35775;&#38382;&#35828;&#26126;&#31526;&#12289;&#25104;&#21592;&#23545;&#35937;&#21644;&#25104;&#21592;&#20989;&#25968;&#30340;&#22768;&#26126;&#21644;&#23450;&#20041;&#30340;&#21015;&#34920;&#65288;&#35265;<a href="cpp-language-class.html">&#31867;&#23450;&#20041;</a>&#65289;</td>
</tr>
</table>
<p>&#31867;&#20851;&#38190;&#35789; <code>struct</code> &#21644; <code>class</code> &#22312; C++ &#20013;&#19981;&#21487;&#20998;&#65292;&#38500;&#20102;&#40664;&#35748;<a href="cpp-language-access.html">&#35775;&#38382;&#27169;&#24335;</a>&#21644;&#40664;&#35748;<a href="cpp-language-derived_class.html">&#32487;&#25215;&#27169;&#24335;</a>&#65292;&#24403;&#31867;&#23450;&#20041;&#20351;&#29992; <code>struct</code> <span class="t-spar">&#31867;&#20851;&#38190;&#35789;</span> &#21017;&#20026; <code>public</code>&#65292;&#33509;&#31867;&#23450;&#20041;&#20351;&#29992; <code>class</code> <span class="t-spar">&#31867;&#20851;&#38190;&#35789;</span> &#21017;&#20026; <code>private</code>&#12290;<code>class</code> &#21644; <code>struct</code> &#22343;&#21487;&#29992;&#20110;<a href="cpp-language-class.html">&#31867;&#23450;&#20041;</a>&#12290;</p>
<p>&#20351;&#29992;&#31867;&#20851;&#38190;&#35789; <code>union</code> &#25152;&#24471;&#30340;&#26159;<a href="cpp-language-union.html">&#32852;&#21512;&#20307;&#23450;&#20041;</a>&#65292;&#23427;&#23450;&#20041;&#22312;&#21516;&#19968;&#26102;&#21051;&#21482;&#20445;&#26377;&#20854;&#19968;&#20010;&#25968;&#25454;&#25104;&#21592;&#30340;&#31867;&#12290;</p>
<p>&#31867;&#21487;&#20197;&#25317;&#26377;&#19979;&#21015;&#31181;&#31867;&#30340;&#25104;&#21592;&#65306;</p>
<div class="t-li1"><span class="t-li">1)</span> &#25968;&#25454;&#25104;&#21592;&#65306;</div>
<div class="t-li2"><span class="t-li">a)</span> <a href="cpp-language-data_members.html">&#38750;&#38745;&#24577;&#25968;&#25454;&#25104;&#21592;</a>&#65292;&#21253;&#25324;<a href="cpp-language-bit_field.html">&#20301;&#22495;</a>&#12290;</div>
<div class="t-li2"><span class="t-li">b)</span> <a href="cpp-language-static.html#.E9.9D.99.E6.80.81.E6.95.B0.E6.8D.AE.E6.88.90.E5.91.98">&#38745;&#24577;&#25968;&#25454;&#25104;&#21592;</a></div>
<div class="t-li1"><span class="t-li">2)</span> &#25104;&#21592;&#20989;&#25968;&#65306;</div>
<div class="t-li2"><span class="t-li">a)</span> <a href="cpp-language-member_functions.html">&#38750;&#38745;&#24577;&#25104;&#21592;&#20989;&#25968;</a></div>
<div class="t-li2"><span class="t-li">b)</span> <a href="cpp-language-static.html#.E9.9D.99.E6.80.81.E6.88.90.E5.91.98.E5.87.BD.E6.95.B0">&#38745;&#24577;&#25104;&#21592;&#20989;&#25968;</a></div>
<div class="t-li1"><span class="t-li">3)</span> &#23884;&#22871;&#31867;&#22411;&#65306;</div>
<div class="t-li2"><span class="t-li">a)</span> &#22312;&#31867;&#23450;&#20041;&#20043;&#20013;&#23450;&#20041;&#30340;<a href="cpp-language-nested_types.html">&#23884;&#22871;&#31867;</a>&#21450;<a href="cpp-language-enum.html">&#26522;&#20030;</a></div>
<div class="t-li2"><span class="t-li">b)</span> &#26082;&#23384;&#31867;&#22411;&#30340;&#21035;&#21517;&#65292;&#20197; <a href="cpp-language-typedef.html"><code>typedef</code></a> <span class="t-rev-inl t-since-cxx11"><span>&#25110;<a href="cpp-language-type_alias.html">&#31867;&#22411;&#21035;&#21517;</a></span> <span><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></span></span>&#22768;&#26126;&#23450;&#20041;</div>
<div class="t-li2"><span class="t-li">c)</span> &#23601;<a href="cpp-language-unqualified_lookup.html#.E6.B3.A8.E5.85.A5.E7.B1.BB.E5.90.8D">&#26597;&#25214;</a>&#32780;&#35328;&#65288;&#38500;&#38750;&#22312;&#29992;&#20316;<a href="cpp-language-initializer_list.html" class="mw-redirect">&#26500;&#36896;&#20989;&#25968;</a>&#21517;&#26102;&#65289;&#65292;&#31867;&#30340;&#21517;&#23383;&#22312;&#35813;&#31867;&#33258;&#36523;&#30340;&#23450;&#20041;&#20013;&#65292;&#34920;&#29616;&#20026;&#19968;&#20010;&#20316;&#20026;&#20854;&#33258;&#36523;&#30340;&#31867;&#22411;&#21035;&#21517;&#30340;&#20844;&#24320;&#25104;&#21592;&#65306;&#36825;&#34987;&#31216;&#20316;<i><a href="cpp-language-injected-class-name.html">&#27880;&#20837;&#31867;&#21517;</a></i></div>
<div class="t-li1"><span class="t-li">4)</span> &#26469;&#33258;&#23450;&#20041;&#20110;&#31867;&#20013;&#30340;&#25152;&#26377;&#26080;&#20316;&#29992;&#22495;&#26522;&#20030;<span class="t-rev-inl t-since-cxx20"><span>&#65292;&#25110;&#30001; <a href="cpp-language-using_declaration.html">using &#22768;&#26126;</a>&#25110; <a href="cpp-language-enum.html#using_enum_.E5.A3.B0.E6.98.8E">using enum &#22768;&#26126;</a>&#24341;&#20837;</span> <span><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></span></span>&#30340;<a href="cpp-language-enum.html">&#26522;&#20030;&#39033;</a></div>
<div class="t-li1"><span class="t-li">5)</span> <a href="cpp-language-member_template.html">&#25104;&#21592;&#27169;&#26495;</a>&#65288;<span class="t-rev-inl t-since-cxx14"><span>&#21464;&#37327;&#27169;&#26495;&#12289;</span> <span><span class="t-mark-rev t-since-cxx14">(C++14 &#36215;)</span></span></span>&#31867;&#27169;&#26495;&#25110;&#20989;&#25968;&#27169;&#26495;&#65289;&#21487;&#20986;&#29616;&#20110;&#20219;&#20309;&#38750;&#23616;&#37096; class/struct/union &#23450;&#20041;&#20307;&#20869;&#12290;</div>
<p>&#25152;&#26377;&#25104;&#21592;&#37117;&#22312;&#31867;&#23450;&#20041;&#20013;&#19968;&#27425;&#24615;&#23450;&#20041;&#65292;&#19981;&#33021;&#21521;&#24050;&#23450;&#20041;&#30340;&#31867;&#28155;&#21152;&#25104;&#21592;&#65288;&#19982;&#21629;&#21517;&#31354;&#38388;&#25104;&#21592;&#19981;&#21516;&#65289;</p>
<p>&#31867; <code>T</code> &#30340;&#25104;&#21592;&#65292;&#22914;&#26524;&#23427;&#26159;&#38745;&#24577;&#25968;&#25454;&#25104;&#21592;&#12289;&#25104;&#21592;&#20989;&#25968;&#12289;&#25104;&#21592;&#31867;&#22411;&#12289;&#25104;&#21592;&#27169;&#26495;&#12289;&#26080;&#20316;&#29992;&#22495;&#26522;&#20030;&#30340;&#26522;&#20030;&#39033;&#12289;&#21311;&#21517;&#25104;&#21592;&#32852;&#21512;&#20307;&#30340;&#25104;&#21592;&#65292;&#37027;&#20040;&#19981;&#33021;&#20351;&#29992; <code>T</code> &#20316;&#20026;&#20854;&#21517;&#23383;&#12290;&#28982;&#32780;&#65292;&#38750;&#38745;&#24577;&#25968;&#25454;&#25104;&#21592;&#21487;&#20351;&#29992;&#21517;&#31216; <code>T</code> &#65292;&#21482;&#35201;&#27809;&#26377;&#29992;&#25143;&#22768;&#26126;&#30340;&#26500;&#36896;&#20989;&#25968;&#12290;</p>
<p>&#22768;&#26126;&#25110;&#32487;&#25215;&#20102;&#33267;&#23569;&#19968;&#20010;<a href="cpp-language-virtual.html">&#34394;</a>&#25104;&#21592;&#20989;&#25968;&#30340;&#31867;&#26159;<i>&#22810;&#24577;</i>&#30340;&#12290;&#27492;&#31867;&#22411;&#30340;&#23545;&#35937;&#26159;<a href="cpp-language-object.html#.E5.A4.9A.E6.80.81.E5.AF.B9.E8.B1.A1">&#22810;&#24577;&#23545;&#35937;</a>&#65292;&#24182;&#25317;&#26377;&#20316;&#20026;&#20854;&#23545;&#35937;&#34920;&#31034;&#19968;&#37096;&#20998;&#23384;&#20648;&#30340;&#36816;&#34892;&#26102;&#31867;&#22411;&#20449;&#24687;&#65292;&#23427;&#21487;&#20197;&#36890;&#36807; <a href="cpp-language-dynamic_cast.html"><code>dynamic_cast</code></a> &#21644; <a href="cpp-language-typeid.html"><code>typeid</code></a> &#26597;&#35810;&#21040;&#12290;&#34394;&#25104;&#21592;&#20989;&#25968;&#21442;&#19982;&#21160;&#24577;&#32465;&#23450;&#12290;</p>
<p>&#22768;&#26126;&#25110;&#32487;&#25215;&#20102;&#33267;&#23569;&#19968;&#20010;&#32431;&#34394;&#20989;&#25968;&#30340;&#31867;&#26159;<a href="cpp-language-abstract_class.html">&#25277;&#35937;&#31867;</a>&#12290;&#19981;&#33021;&#21019;&#24314;&#27492;&#31867;&#22411;&#30340;&#23545;&#35937;&#12290;</p>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx11">
<td>
<p>&#25317;&#26377; <a href="cpp-language-constexpr.html">constexpr</a> &#26500;&#36896;&#20989;&#25968;&#30340;&#31867;&#26159;<a href="cpp-named_req-LiteralType.html"><span style="font-style:italic">&#23383;&#38754;&#31867;&#22411;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(LiteralType)</span></a> &#65306;&#27492;&#31867;&#22411;&#30340;&#23545;&#35937;&#33021;&#29992; <a href="cpp-language-constexpr.html">constexpr</a> &#20989;&#25968;&#22312;&#32534;&#35793;&#26102;&#36827;&#34892;&#25805;&#20316;&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></td>
</tr>
</table>
<p>&#19968;&#20123;&#25104;&#21592;&#20989;&#25968;&#26159;&#29305;&#27530;&#30340;&#65306;&#26576;&#20123;&#26465;&#20214;&#19979;&#65292;&#21363;&#20351;&#29992;&#25143;&#19981;&#23450;&#20041;&#65292;&#32534;&#35793;&#22120;&#20063;&#20250;&#23450;&#20041;&#23427;&#20204;&#12290;&#23427;&#20204;&#26159;&#65306;</p>
<ul>
<li><a href="cpp-language-default_constructor.html">&#40664;&#35748;&#26500;&#36896;&#20989;&#25968;</a></li>
<li><a href="cpp-language-copy_constructor.html">&#22797;&#21046;&#26500;&#36896;&#20989;&#25968;</a></li>
</ul>
<table class="t-rev-begin t-rev-begin-noborder">
<tr class="t-rev t-since-cxx11">
<td>
<ul>
<li><a href="cpp-language-move_constructor.html">&#31227;&#21160;&#26500;&#36896;&#20989;&#25968;</a></li>
</ul>
</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></td>
</tr>
</table>
<ul>
<li><a href="cpp-language-copy_assignment.html">&#22797;&#21046;&#36171;&#20540;&#36816;&#31639;&#31526;</a></li>
</ul>
<table class="t-rev-begin t-rev-begin-noborder">
<tr class="t-rev t-since-cxx11">
<td>
<ul>
<li><a href="cpp-language-move_assignment.html">&#31227;&#21160;&#36171;&#20540;&#36816;&#31639;&#31526;</a></li>
</ul>
</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></td>
</tr>
</table>
<ul>
<li><a href="cpp-language-destructor.html">&#26512;&#26500;&#20989;&#25968;</a></li>
</ul>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>