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

288 lines
41 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>&#23545;&#35937;</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_object skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">&#23545;&#35937;</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>C++ &#31243;&#24207;&#21487;&#20197;&#21019;&#24314;&#12289;&#38144;&#27585;&#12289;&#24341;&#29992;&#12289;&#35775;&#38382;&#24182;&#25805;&#20316;<i>&#23545;&#35937;</i>&#12290;</p>
<p>&#22312; C++ &#20013;&#65292;&#19968;&#20010;&#23545;&#35937;&#25317;&#26377;&#36825;&#20123;&#24615;&#36136;&#65306;</p>
<ul>
<li>&#22823;&#23567;&#65288;&#21487;&#20197;&#20351;&#29992; <a href="cpp-language-sizeof.html"><code>sizeof</code></a> &#33719;&#21462;&#65289;&#65307;</li>
<li>&#23545;&#40784;&#35201;&#27714;&#65288;&#21487;&#20197;&#20351;&#29992; <a href="cpp-language-alignof.html"><code>alignof</code></a> &#33719;&#21462;&#65289;&#65307;</li>
<li><a href="cpp-language-storage_duration.html">&#23384;&#20648;&#26399;</a>&#65288;&#33258;&#21160;&#12289;&#38745;&#24577;&#12289;&#21160;&#24577;&#12289;&#32447;&#31243;&#23616;&#37096;&#65289;&#65307;</li>
<li><a href="cpp-language-lifetime.html">&#29983;&#23384;&#26399;</a>&#65288;&#19982;&#23384;&#20648;&#26399;&#32465;&#23450;&#25110;&#32773;&#20020;&#26102;&#65289;</li>
<li><a href="cpp-language-type.html">&#31867;&#22411;</a>&#65307;</li>
<li>&#20540;&#65288;&#21487;&#33021;&#26159;&#19981;&#30830;&#23450;&#30340;&#65292;&#20363;&#22914;<a href="cpp-language-default_initialization.html">&#40664;&#35748;&#21021;&#22987;&#21270;</a>&#30340;&#38750;&#31867;&#31867;&#22411;&#65289;&#65307;</li>
<li><a href="cpp-language-identifiers.html#.E5.90.8D.E5.AD.97">&#21517;&#23383;</a>&#65288;&#21487;&#36873;&#65289;&#12290;</li>
</ul>
<p>&#20197;&#19979;&#23454;&#20307;&#37117;&#19981;&#26159;&#23545;&#35937;&#65306;&#20540;&#65292;&#24341;&#29992;&#65292;&#20989;&#25968;&#65292;&#26522;&#20030;&#39033;&#65292;&#31867;&#22411;&#65292;&#31867;&#30340;&#38750;&#38745;&#24577;&#25104;&#21592;&#65292;&#27169;&#26495;&#65292;&#31867;&#25110;&#20989;&#25968;&#27169;&#26495;&#30340;&#29305;&#21270;&#65292;&#21629;&#21517;&#31354;&#38388;&#65292;&#24418;&#21442;&#21253;&#65292;&#21644; <span class="t-c"><span class="mw-geshi cpp source-cpp">this</span></span>&#12290;</p>
<p><i>&#21464;&#37327;</i>&#30001;<a href="cpp-language-declarations.html">&#22768;&#26126;</a>&#25152;&#24341;&#20837;&#65292;&#26159;&#19968;&#20010;&#23545;&#35937;&#25110;&#19981;&#26159;&#23545;&#38750;&#38745;&#24577;&#25968;&#25454;&#25104;&#21592;&#30340;&#24341;&#29992;&#12290;</p>
<h3><span class="mw-headline" id=".E5.AF.B9.E8.B1.A1.E5.88.9B.E5.BB.BA">&#23545;&#35937;&#21019;&#24314;</span></h3>
<p>&#23545;&#35937;&#33021;&#30001;<a href="cpp-language-definition.html">&#23450;&#20041;</a>&#12289;<a href="cpp-language-new.html">new &#34920;&#36798;&#24335;</a>&#12289;<a href="cpp-language-throw.html">throw &#34920;&#36798;&#24335;</a>&#12289;&#26356;&#25913;<a href="cpp-language-union.html">&#32852;&#21512;&#20307;</a>&#30340;&#27963;&#36291;&#25104;&#21592;&#21644;&#27714;&#20540;&#35201;&#27714;<a href="cpp-language-lifetime.html#.E4.B8.B4.E6.97.B6.E5.AF.B9.E8.B1.A1.E7.94.9F.E5.AD.98.E6.9C.9F">&#20020;&#26102;&#23545;&#35937;</a>&#30340;&#34920;&#36798;&#24335;&#26174;&#24335;&#21019;&#24314;&#12290;&#26174;&#24335;&#23545;&#35937;&#21019;&#24314;&#20013;&#21019;&#24314;&#30340;&#23545;&#35937;&#26159;&#21807;&#19968;&#23450;&#20041;&#30340;&#12290;</p>
<p><a href="cpp-language-lifetime.html#.E9.9A.90.E5.BC.8F.E7.94.9F.E5.AD.98.E6.9C.9F.E7.B1.BB.E5.9E.8B">&#38544;&#24335;&#29983;&#23384;&#26399;&#31867;&#22411;</a>&#30340;&#23545;&#35937;&#20063;&#21487;&#20197;&#30001;&#19979;&#21015;&#25805;&#20316;&#38544;&#24335;&#21019;&#24314;&#65306;</p>
<ul>
<li>&#24320;&#22987; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">char</span></span></span>&#12289;<span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">unsigned</span> <span class="kw4">char</span></span></span> <span class="t-rev-inl t-since-cxx17"><span>&#25110; <span class="t-lc">std::byte</span></span> <span><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></span></span>&#25968;&#32452;&#29983;&#23384;&#26399;&#30340;&#25805;&#20316;&#65292;&#35813;&#24773;&#20917;&#19979;&#22312;&#35813;&#25968;&#32452;&#20013;&#21019;&#24314;&#36825;&#31181;&#23545;&#35937;&#65292;</li>
<li>&#35843;&#29992;&#19979;&#21015;&#20998;&#37197;&#20989;&#25968;&#65292;&#35813;&#24773;&#20917;&#19979;&#22312;&#20998;&#37197;&#30340;&#23384;&#20648;&#20013;&#21019;&#24314;&#36825;&#31181;&#23545;&#35937;&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li><span class="t-lc"><a href="cpp-memory-new-operator_new.html">operator new</a></span></li>
<li><span class="t-lc"><a href="cpp-memory-new-operator_new.html">operator new[]</a></span></li>
<li><span class="t-lc"><a href="cpp-memory-c-malloc.html">std::malloc</a></span></li>
<li><span class="t-lc"><a href="cpp-memory-c-calloc.html">std::calloc</a></span></li>
<li><span class="t-lc"><a href="cpp-memory-c-realloc.html">std::realloc</a></span></li>
</ul>
</dd>
</dl>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx17">
<td>
<dl>
<dd>
<ul>
<li><span class="t-lc"><a href="cpp-memory-c-aligned_alloc.html">std::aligned_alloc</a></span></li>
</ul>
</dd>
</dl>
</td>
<td><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></td>
</tr>
</table>
<ul>
<li>&#35843;&#29992;&#19979;&#21015;&#23545;&#35937;&#34920;&#31034;&#22797;&#21046;&#20989;&#25968;&#65292;&#35813;&#24773;&#20917;&#19979;&#22312;&#30446;&#26631;&#23384;&#20648;&#21306;&#22495;&#25110;&#32467;&#26524;&#20013;&#21019;&#24314;&#36825;&#31181;&#23545;&#35937;&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li><span class="t-lc"><a href="cpp-string-byte-memcpy.html">std::memcpy</a></span></li>
<li><span class="t-lc"><a href="cpp-string-byte-memmove.html">std::memmove</a></span></li>
</ul>
</dd>
</dl>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx20">
<td>
<dl>
<dd>
<ul>
<li><span class="t-lc">std::bit_cast</span></li>
</ul>
</dd>
</dl>
</td>
<td><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></td>
</tr>
</table>
<p>&#21482;&#35201;&#22312;&#33021;&#32473;&#20104;&#31243;&#24207;&#26377;&#23450;&#20041;&#30340;&#34892;&#20026;&#26102;&#65292;&#21516;&#19968;&#23384;&#20648;&#21306;&#22495;&#20013;&#21487;&#21019;&#24314;&#38646;&#25110;&#22810;&#20010;&#23545;&#35937;&#12290;&#22914;&#26524;&#26080;&#27861;&#36825;&#26679;&#21019;&#24314;&#65292;&#20363;&#22914;&#25805;&#20316;&#20914;&#31361;&#65292;&#21017;&#31243;&#24207;&#34892;&#20026;&#26410;&#23450;&#20041;&#12290;&#33509;&#22810;&#20010;&#36825;&#31181;&#38544;&#24335;&#21019;&#24314;&#30340;&#23545;&#35937;&#30340;&#38598;&#21512;&#20250;&#32473;&#20104;&#31243;&#24207;&#26377;&#23450;&#20041;&#34892;&#20026;&#65292;&#21017;&#19981;&#25351;&#23450;&#36825;&#20123;&#38598;&#21512;&#20013;&#30340;&#21738;&#19968;&#20010;&#34987;&#21019;&#24314;&#12290;&#25442;&#35328;&#20043;&#65292;&#19981;&#35201;&#27714;&#38544;&#24335;&#21019;&#24314;&#30340;&#23545;&#35937;&#26159;&#21807;&#19968;&#23450;&#20041;&#30340;&#12290;</p>
<p>&#22312;&#25351;&#23450;&#30340;&#23384;&#20648;&#21306;&#22495;&#20869;&#38544;&#24335;&#21019;&#24314;&#23545;&#35937;&#21518;&#65292;&#19968;&#20123;&#25805;&#20316;&#20250;&#29983;&#25104;&#25351;&#21521;<i>&#36866;&#21512;&#30340;&#24050;&#21019;&#24314;&#23545;&#35937;</i>&#30340;&#25351;&#38024;&#12290;&#36866;&#21512;&#30340;&#24050;&#21019;&#24314;&#23545;&#35937;&#19982;&#23384;&#20648;&#21306;&#22495;&#25317;&#26377;&#30456;&#21516;&#22320;&#22336;&#12290;&#31867;&#20284;&#22320;&#65292;&#24403;&#19988;&#20165;&#24403;&#19981;&#23384;&#22312;&#33021;&#32473;&#20104;&#31243;&#24207;&#26377;&#23450;&#20041;&#34892;&#20026;&#30340;&#25351;&#38024;&#20540;&#26102;&#65292;&#34892;&#20026;&#25165;&#26410;&#23450;&#20041;&#65307;&#32780;&#33509;&#26377;&#22810;&#20010;&#32473;&#20104;&#31243;&#24207;&#26377;&#23450;&#20041;&#34892;&#20026;&#30340;&#20540;&#65292;&#21017;&#19981;&#25351;&#23450;&#20135;&#29983;&#21738;&#20010;&#20540;&#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;cstdlib&gt;</span>
<span class="kw1">struct</span> X <span class="br0">{</span> <span class="kw4">int</span> a, b<span class="sy4">;</span> <span class="br0">}</span><span class="sy4">;</span>
X <span class="sy2">*</span>MakeX<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
<span class="co1">// &#21487;&#33021;&#30340;&#26377;&#23450;&#20041;&#34892;&#20026;&#20043;&#19968;&#65306;</span>
<span class="co1">// &#35843;&#29992; std::malloc &#38544;&#24335;&#21019;&#24314;&#19968;&#20010; X &#31867;&#22411;&#23545;&#35937;&#21450;&#20854;&#23376;&#23545;&#35937; a &#19982; b &#65292;&#24182;&#36820;&#22238;&#25351;&#21521;&#35813; X &#23545;&#35937;&#30340;&#25351;&#38024;</span>
X <span class="sy2">*</span>p <span class="sy1">=</span> <span class="kw1">static_cast</span><span class="sy1">&lt;</span>X<span class="sy2">*</span><span class="sy1">&gt;</span><span class="br0">(</span><a href="cpp-memory-c-malloc.html"><span class="kw759">std::<span class="me2">malloc</span></span></a><span class="br0">(</span>sizeof<span class="br0">(</span>X<span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
p<span class="sy2">-</span><span class="sy1">&gt;</span>a <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span>
p<span class="sy2">-</span><span class="sy1">&gt;</span>b <span class="sy1">=</span> <span class="nu0">2</span><span class="sy4">;</span>
<span class="kw1">return</span> p<span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#35843;&#29992; <span class="t-lc"><a href="cpp-memory-allocator-allocate.html">std::allocator::allocate</a></span> &#25110;<a href="cpp-language-union.html">&#32852;&#21512;&#20307;</a>&#31867;&#22411;&#30340;&#38544;&#24335;&#23450;&#20041;&#30340;&#22797;&#21046;/&#31227;&#21160;&#29305;&#27530;&#25104;&#21592;&#20989;&#25968;&#20134;&#33021;&#21019;&#24314;&#23545;&#35937;&#12290;</p>
<h3><span class="mw-headline" id=".E5.AF.B9.E8.B1.A1.E8.A1.A8.E7.A4.BA.E4.B8.8E.E5.80.BC.E8.A1.A8.E7.A4.BA">&#23545;&#35937;&#34920;&#31034;&#19982;&#20540;&#34920;&#31034;</span></h3>
<p>&#23545;&#20110;&#19968;&#20010; <code>T</code> &#31867;&#22411;&#30340;&#23545;&#35937;&#65292;&#20854;<i>&#23545;&#35937;&#34920;&#31034; (object representation)</i> &#26159;&#21644;&#23427;&#24320;&#22987;&#20110;&#21516;&#19968;&#20010;&#22320;&#22336;&#65292;&#19988;&#38271;&#24230;&#20026; <span class="t-c"><span class="mw-geshi cpp source-cpp">sizeof<span class="br0">(</span>T<span class="br0">)</span></span></span> &#30340;&#19968;&#27573; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">unsigned</span> <span class="kw4">char</span></span></span><span class="t-rev-inl t-since-cxx17"><span>&#65288;&#25110;&#31561;&#20215;&#30340; <span class="t-lc">std::byte</span>&#65289;</span> <span><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></span></span>&#31867;&#22411;&#30340;&#23545;&#35937;&#24207;&#21015;&#12290;</p>
<p>&#23545;&#35937;&#30340;<i>&#20540;&#34920;&#31034; (value representation)</i>&#21017;&#26159;&#29992;&#20110;&#25345;&#26377;&#23427;&#30340;&#31867;&#22411; <code>T</code> &#30340;&#20540;&#30340;&#20301;&#30340;&#38598;&#21512;&#12290;</p>
<p>&#23545;&#20110;<a href="cpp-named_req-TriviallyCopyable.html"><span style="font-style:italic">&#21487;&#24179;&#20961;&#22797;&#21046;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(TriviallyCopyable)</span></a> &#31867;&#22411;&#65292;&#20854;&#20540;&#34920;&#31034;&#26159;&#23545;&#35937;&#34920;&#31034;&#30340;&#19968;&#37096;&#20998;&#65292;&#36825;&#24847;&#21619;&#30528;&#22797;&#21046;&#35813;&#23545;&#35937;&#22312;&#23384;&#20648;&#20013;&#25152;&#21344;&#25454;&#30340;&#23383;&#33410;&#23601;&#36275;&#20197;&#20135;&#29983;&#21478;&#19968;&#20010;&#20855;&#26377;&#30456;&#21516;&#20540;&#30340;&#23545;&#35937;&#65288;&#38500;&#38750;&#36825;&#20010;&#20540;&#26159;&#35813;&#31867;&#22411;&#30340;&#19968;&#20010;&ldquo;&#38519;&#38449;&#34920;&#31034;&rdquo;&#65292;&#23558;&#23427;&#35835;&#21462;&#21040; CPU &#20013;&#20250;&#20135;&#29983;&#19968;&#20010;&#30828;&#20214;&#24322;&#24120;&#65292;&#23601;&#20687;&#28014;&#28857;&#20540;&#30340; SNaN&#65288;&ldquo;Signaling NaN &#21457;&#20449;&#38750;&#25968;&rdquo;&#65289;&#25110;&#25972;&#25968;&#20540;&#30340; NaT&#65288;&ldquo;Not a Thing &#38750;&#20107;&#29289;&rdquo;&#65289;&#65289;&#12290;</p>
<p>&#21453;&#36807;&#26469;&#19981;&#19968;&#23450;&#26159;&#23545;&#30340;&#65306;<a href="cpp-named_req-TriviallyCopyable.html"><span style="font-style:italic">&#21487;&#24179;&#20961;&#22797;&#21046;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(TriviallyCopyable)</span></a> &#31867;&#22411;&#30340;&#20004;&#20010;&#20855;&#26377;&#19981;&#21516;&#23545;&#35937;&#34920;&#31034;&#30340;&#23545;&#35937;&#21487;&#33021;&#34920;&#29616;&#20986;&#30456;&#21516;&#30340;&#20540;&#12290;&#20363;&#22914;&#65292;&#28014;&#28857;&#25968;&#26377;&#22810;&#31181;&#20301;&#27169;&#24335;&#37117;&#34920;&#31034;&#30456;&#21516;&#30340;&#29305;&#27530;&#20540; <a href="cpp-numeric-math-NAN.html">NaN</a> &#12290;&#26356;&#24120;&#35265;&#30340;&#26159;&#65292;&#23545;&#35937;&#34920;&#31034;&#30340;&#19968;&#20123;&#20301;&#21487;&#33021;&#26681;&#26412;&#19981;&#21442;&#19982;&#20540;&#34920;&#31034;&#65307;&#36825;&#20123;&#20301;&#21487;&#33021;&#26159;&#20026;&#20102;&#28385;&#36275;<a href="cpp-language-object.html#.E5.AF.B9.E9.BD.90">&#23545;&#40784;&#35201;&#27714;</a>&#65292;<a href="cpp-language-bit_field.html">&#20301;&#22495;</a>&#30340;&#22823;&#23567;&#31561;&#24471;&#20197;&#28385;&#36275;&#32780;&#22635;&#20805;&#20854;&#38388;&#30340;&#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;cassert&gt;</span>
<span class="kw1">struct</span> S <span class="br0">{</span>
<span class="kw4">char</span> c<span class="sy4">;</span> <span class="co1">// 1 &#23383;&#33410;&#20540;</span>
<span class="co1">// 3 &#23383;&#33410;&#22635;&#20805;&#65288;&#20551;&#35774; alignof(float) == 4 &#65289;</span>
<span class="kw4">float</span> f<span class="sy4">;</span> <span class="co1">// 4 &#23383;&#33410;&#20540; &#65288;&#20551;&#35774; sizeof(float) == 4 &#65289;</span>
<span class="kw4">bool</span> operator<span class="sy1">==</span><span class="br0">(</span><span class="kw4">const</span> S<span class="sy3">&amp;</span> arg<span class="br0">)</span> <span class="kw4">const</span> <span class="br0">{</span> <span class="co1">// &#22522;&#20110;&#20540;&#30340;&#30456;&#31561;</span>
<span class="kw1">return</span> c <span class="sy1">==</span> arg.<span class="me1">c</span> <span class="sy3">&amp;&amp;</span> f <span class="sy1">==</span> arg.<span class="me1">f</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">void</span> f<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
static_assert<span class="br0">(</span>sizeof<span class="br0">(</span>S<span class="br0">)</span> <span class="sy1">==</span> <span class="nu0">8</span><span class="br0">)</span><span class="sy4">;</span>
S s1 <span class="sy1">=</span> <span class="br0">{</span><span class="st0">&#39;a&#39;</span>, <span class="nu16">3.14</span><span class="br0">}</span><span class="sy4">;</span>
S s2 <span class="sy1">=</span> s1<span class="sy4">;</span>
<span class="kw1">reinterpret_cast</span><span class="sy1">&lt;</span><span class="kw4">unsigned</span> <span class="kw4">char</span><span class="sy2">*</span><span class="sy1">&gt;</span><span class="br0">(</span><span class="sy3">&amp;</span>s1<span class="br0">)</span><span class="br0">[</span><span class="nu0">2</span><span class="br0">]</span> <span class="sy1">=</span> <span class="st0">&#39;b&#39;</span><span class="sy4">;</span> <span class="co1">// &#26356;&#25913;&#22635;&#20805;&#30340;&#31532; 2 &#23383;&#33410;</span>
<a href="cpp-error-assert.html"><span class="kw774">assert</span></a><span class="br0">(</span>s1 <span class="sy1">==</span> s2<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#20540;&#24182;&#26410;&#26356;&#25913;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#23545;&#20110; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">char</span></span></span>&#65292;<span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">signed</span> <span class="kw4">char</span></span></span>&#65292;&#21644; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">unsigned</span> <span class="kw4">char</span></span></span> &#31867;&#22411;&#30340;&#23545;&#35937;&#65292;&#38500;&#38750;&#23427;&#20204;&#26159;&#22823;&#23567;&#36807;&#22823;&#30340;<a href="cpp-language-bit_field.html">&#20301;&#22495;</a>&#65292;&#21542;&#21017;&#20854;&#23545;&#35937;&#34920;&#31034;&#30340;&#27599;&#20010;&#20301;&#37117;&#21442;&#19982;&#20854;&#20540;&#34920;&#31034;&#65292;&#32780;&#19988;&#27599;&#19968;&#31181;&#20301;&#27169;&#24335;&#37117;&#34920;&#31034;&#19968;&#20010;&#29420;&#31435;&#30340;&#20540;&#65288;&#27809;&#26377;&#22635;&#20805;&#20301;&#25110;&#38519;&#38449;&#20301;&#65292;&#19981;&#20801;&#35768;&#20540;&#30340;&#22810;&#31181;&#34920;&#31034;&#65289;&#12290;</p>
<h3><span class="mw-headline" id=".E5.AD.90.E5.AF.B9.E8.B1.A1">&#23376;&#23545;&#35937;</span></h3>
<p>&#19968;&#20010;&#23545;&#35937;&#21487;&#20197;&#25317;&#26377;<i>&#23376;&#23545;&#35937;</i>&#12290;&#23376;&#23545;&#35937;&#21253;&#25324;&#65306;</p>
<ul>
<li>&#25104;&#21592;&#23545;&#35937;</li>
<li>&#22522;&#31867;&#23376;&#23545;&#35937;</li>
<li>&#25968;&#32452;&#20803;&#32032;</li>
</ul>
<p>&#19981;&#26159;&#20854;&#20182;&#20219;&#20309;&#23545;&#35937;&#30340;&#23376;&#23545;&#35937;&#30340;&#23545;&#35937;&#31216;&#20026;<i>&#23436;&#25972;&#23545;&#35937;</i>&#12290;</p>
<p>&#33509;&#19968;&#20010;&#23376;&#23545;&#35937;&#26159;&#22522;&#31867;&#23376;&#23545;&#35937;<span class="t-rev-inl t-since-cxx20"><span>&#25110;&#22768;&#26126;&#26377; <code>[[<a href="cpp-language-attributes-no_unique_address.html">no_unique_address</a>]]</code> &#23646;&#24615;&#30340;&#38750;&#38745;&#24577;&#25968;&#25454;&#25104;&#21592;</span> <span><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></span></span>&#65292;&#21017;&#23427;<i>&#28508;&#22312;&#37325;&#21472;</i>&#12290;</p>
<p>&#23436;&#25972;&#23545;&#35937;&#12289;&#25104;&#21592;&#23545;&#35937;&#21644;&#25968;&#32452;&#20803;&#32032;&#20063;&#34987;&#31216;&#20026;<i>&#26368;&#32456;&#27966;&#29983;&#23545;&#35937;</i> &#65292;&#20197;&#20415;&#21644;&#22522;&#31867;&#23376;&#23545;&#35937;&#21306;&#20998;&#24320;&#12290;&#26082;&#38750;&#28508;&#22312;&#37325;&#21472;&#20134;&#38750;<a href="cpp-language-bit_field.html">&#20301;&#22495;</a>&#30340;&#23545;&#35937;&#30340;&#22823;&#23567;&#19981;&#33021;&#20026;&#38646;&#65288;&#22522;&#31867;&#23376;&#23545;&#35937;&#30340;&#22823;&#23567;&#21487;&#33021;&#20026;&#38646;<span class="t-rev-inl t-since-cxx20"><span>&#65292;&#21363;&#20351;&#26080; <code>[[no_unique_address]]</code> &#20063;&#26159;&#22914;&#27492;</span> <span><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></span></span>&#65306;&#21442;&#35265;<a href="cpp-language-ebo.html">&#31354;&#22522;&#31867;&#20248;&#21270;</a>&#65289;&#12290;</p>
<p>&#19968;&#20010;&#23545;&#35937;&#33021;&#21547;&#26377;&#20854;&#20182;&#23545;&#35937;&#65292;&#35813;&#24773;&#20917;&#19979;&#34987;&#21547;&#26377;&#30340;&#23545;&#35937;<i>&#20869;&#23884;&#20110;</i>&#21069;&#36848;&#23545;&#35937;&#12290;&#33509;&#31526;&#21512;&#19979;&#21015;&#26465;&#20214;&#65292;&#21017;&#23545;&#35937; <code>a</code> &#20869;&#23884;&#20110;&#21478;&#19968;&#23545;&#35937; <code>b</code> &#65306;</p>
<ul>
<li><code>a</code> &#26159; <code>b</code> &#30340;&#23376;&#23545;&#35937;&#65292;&#25110;</li>
<li><code>b</code> &#20026; <code>a</code> &#25552;&#20379;&#23384;&#20648;&#65292;&#25110;</li>
<li>&#23384;&#22312;&#23545;&#35937; <code>c</code> &#65292;&#20854;&#20013; <code>a</code> &#20869;&#23884;&#20110; <code>c</code> &#32780; <code>c</code> &#20869;&#23884;&#20110; <code>b</code> &#12290;</li>
</ul>
<p>&#20219;&#20309;&#20004;&#20010;&#20855;&#26377;&#20132;&#21472;&#30340;<a href="cpp-language-lifetime.html">&#29983;&#23384;&#26399;</a>&#30340;&#65288;&#38750;<a href="cpp-language-bit_field.html">&#20301;&#22495;</a>&#65289;&#23545;&#35937;&#24517;&#28982;&#26377;&#19981;&#21516;&#30340;&#22320;&#22336;&#65292;&#38500;&#38750;&#20854;&#20013;&#19968;&#20010;&#23545;&#35937;&#20869;&#23884;&#20110;&#21478;&#19968;&#20010;&#23545;&#35937;&#65292;&#25110;&#32773;&#20004;&#20010;&#23545;&#35937;&#37117;&#26159;&#21516;&#19968;&#20010;&#23436;&#25972;&#23545;&#35937;&#20013;&#30340;&#19981;&#21516;&#31867;&#22411;&#30340;&#23376;&#23545;&#35937;&#65292;&#19988;&#20854;&#20013;&#19968;&#20010;&#26159;&#22823;&#23567;&#20026;&#38646;&#30340;&#23376;&#23545;&#35937;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">char</span> c1 <span class="sy1">=</span> <span class="st0">&#39;x&#39;</span><span class="sy4">;</span>
<span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">char</span> c2 <span class="sy1">=</span> <span class="st0">&#39;x&#39;</span><span class="sy4">;</span>
<a href="cpp-error-assert.html"><span class="kw774">assert</span></a><span class="br0">(</span><span class="sy3">&amp;</span>c1 <span class="sy3">!</span><span class="sy1">=</span> <span class="sy3">&amp;</span>c2<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#20540;&#30456;&#21516;&#65292;&#22320;&#22336;&#19981;&#21516;</span></pre></div>
</div>
<h3><span class="mw-headline" id=".E5.A4.9A.E6.80.81.E5.AF.B9.E8.B1.A1">&#22810;&#24577;&#23545;&#35937;</span></h3>
<p>&#22768;&#26126;&#25110;&#32487;&#25215;&#20102;&#33267;&#23569;&#19968;&#20010;&#34394;&#20989;&#25968;&#30340;&#31867;&#31867;&#22411;&#30340;&#23545;&#35937;&#26159;&#22810;&#24577;&#23545;&#35937;&#12290;&#27599;&#20010;&#22810;&#24577;&#23545;&#35937;&#20013;&#65292;&#23454;&#29616;&#37117;&#20250;&#20648;&#23384;&#39069;&#22806;&#30340;&#20449;&#24687;&#65288;&#22312;&#25152;&#26377;&#29616;&#23384;&#30340;&#23454;&#29616;&#20013;&#65292;&#22914;&#26524;&#27809;&#34987;&#32534;&#35793;&#22120;&#20248;&#21270;&#25481;&#30340;&#35805;&#65292;&#36825;&#23601;&#26159;&#19968;&#20010;&#25351;&#38024;&#65289;&#65292;&#23427;&#34987;&#29992;&#20110;&#36827;&#34892;<a href="cpp-language-virtual.html">&#34394;&#20989;&#25968;</a>&#30340;&#35843;&#29992;&#65292;RTTI &#21151;&#33021;&#29305;&#24615;&#65288;<a href="cpp-language-dynamic_cast.html"><code>dynamic_cast</code></a> &#21644; <a href="cpp-language-typeid.html"><code>typeid</code></a>&#65289;&#20063;&#29992;&#23427;&#22312;&#36816;&#34892;&#26102;&#30830;&#23450;&#23545;&#35937;&#21019;&#24314;&#26102;&#25152;&#29992;&#30340;&#31867;&#22411;&#65292;&#32780;&#19981;&#31649;&#20351;&#29992;&#23427;&#30340;&#34920;&#36798;&#24335;&#26159;&#20160;&#20040;&#31867;&#22411;&#12290;</p>
<p>&#23545;&#20110;&#38750;&#22810;&#24577;&#23545;&#35937;&#65292;&#20540;&#30340;&#35299;&#37322;&#26041;&#24335;&#30001;&#20351;&#29992;&#23545;&#35937;&#30340;&#34920;&#36798;&#24335;&#25152;&#30830;&#23450;&#65292;&#36825;&#22312;&#32534;&#35793;&#26399;&#23601;&#24050;&#32463;&#20915;&#23450;&#20102;&#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="co2">#include &lt;typeinfo&gt;</span>
<span class="kw1">struct</span> Base1 <span class="br0">{</span>
<span class="co1">// &#22810;&#24577;&#31867;&#22411;&#65306;&#22768;&#26126;&#20102;&#34394;&#25104;&#21592;</span>
<span class="kw1">virtual</span> ~Base1<span class="br0">(</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> Derived1 <span class="sy4">:</span> Base1 <span class="br0">{</span>
<span class="co1">// &#22810;&#24577;&#31867;&#22411;&#65306;&#32487;&#25215;&#20102;&#34394;&#25104;&#21592;</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> Base2 <span class="br0">{</span>
<span class="co1">// &#38750;&#22810;&#24577;&#31867;&#22411;</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> Derived2 <span class="sy4">:</span> Base2 <span class="br0">{</span>
<span class="co1">// &#38750;&#22810;&#24577;&#31867;&#22411;</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>
Derived1 obj1<span class="sy4">;</span> <span class="co1">// object1 &#21019;&#24314;&#20026;&#31867;&#22411; Derived1</span>
Derived2 obj2<span class="sy4">;</span> <span class="co1">// object2 &#21019;&#24314;&#20026;&#31867;&#22411; Derived2</span>
Base1<span class="sy3">&amp;</span> b1 <span class="sy1">=</span> obj1<span class="sy4">;</span> <span class="co1">// b1 &#25351;&#20195;&#23545;&#35937; obj1</span>
Base2<span class="sy3">&amp;</span> b2 <span class="sy1">=</span> obj2<span class="sy4">;</span> <span class="co1">// b2 &#25351;&#20195;&#23545;&#35937; obj2</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;b1 &#30340;&#34920;&#36798;&#24335;&#31867;&#22411;: &quot;</span> <span class="sy1">&lt;&lt;</span> <span class="kw1">typeid</span><span class="br0">(</span>decltype<span class="br0">(</span>b1<span class="br0">)</span><span class="br0">)</span>.<span class="me1">name</span><span class="br0">(</span><span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span>
<span class="sy1">&lt;&lt;</span> <span class="st0">&quot;b2 &#30340;&#34920;&#36798;&#24335;&#31867;&#22411;: &quot;</span> <span class="sy1">&lt;&lt;</span> <span class="kw1">typeid</span><span class="br0">(</span>decltype<span class="br0">(</span>b2<span class="br0">)</span><span class="br0">)</span>.<span class="me1">name</span><span class="br0">(</span><span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span>
<span class="sy1">&lt;&lt;</span> <span class="st0">&quot;b1 &#30340;&#23545;&#35937;&#31867;&#22411;: &quot;</span> <span class="sy1">&lt;&lt;</span> <span class="kw1">typeid</span><span class="br0">(</span>b1<span class="br0">)</span>.<span class="me1">name</span><span class="br0">(</span><span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span>
<span class="sy1">&lt;&lt;</span> <span class="st0">&quot;b2 &#30340;&#23545;&#35937;&#31867;&#22411;: &quot;</span> <span class="sy1">&lt;&lt;</span> <span class="kw1">typeid</span><span class="br0">(</span>b2<span class="br0">)</span>.<span class="me1">name</span><span class="br0">(</span><span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span>
<span class="sy1">&lt;&lt;</span> <span class="st0">&quot;b1 &#30340;&#22823;&#23567;: &quot;</span> <span class="sy1">&lt;&lt;</span> sizeof b1 <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span>
<span class="sy1">&lt;&lt;</span> <span class="st0">&quot;b2 &#30340;&#22823;&#23567;: &quot;</span> <span class="sy1">&lt;&lt;</span> sizeof b2 <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#21487;&#33021;&#30340;&#36755;&#20986;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="text source-text">
<pre class="de1">b1 &#30340;&#34920;&#36798;&#24335;&#31867;&#22411;: Base1
b2 &#30340;&#34920;&#36798;&#24335;&#31867;&#22411;: Base2
b1 &#30340;&#23545;&#35937;&#31867;&#22411;: Derived1
b2 &#30340;&#23545;&#35937;&#31867;&#22411;: Base2
b1 &#30340;&#22823;&#23567;: 8
b2 &#30340;&#22823;&#23567;: 1</pre></div>
</div>
</div>
<h3><span class="mw-headline" id=".E4.B8.A5.E6.A0.BC.E7.9A.84.E5.88.AB.E5.90.8D.E4.BD.BF.E7.94.A8">&#20005;&#26684;&#30340;&#21035;&#21517;&#20351;&#29992;</span></h3>
<p>&#22312;&#24456;&#22810;&#24773;&#20917;&#19979;&#65292;&#36890;&#36807;&#31867;&#22411;&#19982;&#23545;&#35937;&#30340;&#21019;&#24314;&#31867;&#22411;&#19981;&#21516;&#30340;&#34920;&#36798;&#24335;&#26469;&#35775;&#38382;&#23545;&#35937;&#37117;&#26159;&#26410;&#23450;&#20041;&#34892;&#20026;&#65292;&#20854;&#20363;&#23376;&#21644;&#20363;&#22806;&#35831;&#21442;&#32771; <a href="cpp-language-reinterpret_cast.html#.E7.B1.BB.E5.9E.8B.E5.88.AB.E5.90.8D.E4.BD.BF.E7.94.A8">reinterpret_cast</a>&#12290;</p>
<h3><span class="mw-headline" id=".E5.AF.B9.E9.BD.90">&#23545;&#40784;</span></h3>
<p>&#27599;&#20010;<a href="cpp-language-type.html">&#23545;&#35937;&#31867;&#22411;</a>&#37117;&#20855;&#26377;&#34987;&#31216;&#20026;<i>&#23545;&#40784;&#35201;&#27714;&#65288;alignment requirement&#65289;</i>&#30340;&#24615;&#36136;&#65292;&#23427;&#26159;&#19968;&#20010;&#25972;&#25968;&#65288;&#31867;&#22411;&#20026; <span class="t-lc"><a href="cpp-types-size_t.html">std::size_t</a></span>&#65292;&#24635;&#26159; 2 &#30340;&#24130;&#65289;&#65292;&#34920;&#31034;&#36825;&#20010;&#31867;&#22411;&#30340;&#19981;&#21516;&#23545;&#35937;&#25152;&#33021;&#20998;&#37197;&#25918;&#32622;&#30340;&#36830;&#32493;&#30456;&#37051;&#22320;&#22336;&#20043;&#38388;&#30340;&#23383;&#33410;&#25968;&#12290;</p>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx11">
<td>
<p>&#21487;&#20197;&#29992; <a href="cpp-language-alignof.html"><code>alignof</code></a> &#25110; <span class="t-lc"><a href="cpp-types-alignment_of.html">std::alignment_of</a></span> &#26469;&#26597;&#35810;&#31867;&#22411;&#30340;&#23545;&#40784;&#35201;&#27714;&#12290;&#21487;&#20197;&#20351;&#29992;&#25351;&#38024;&#23545;&#40784;&#20989;&#25968; <span class="t-lc"><a href="cpp-memory-align.html">std::align</a></span> &#26469;&#33719;&#21462;&#26576;&#20010;&#32531;&#20914;&#21306;&#20013;&#32463;&#36807;&#36866;&#24403;&#23545;&#40784;&#30340;&#25351;&#38024;&#65292;&#36824;&#21487;&#20197;&#20351;&#29992; <span class="t-lc"><a href="cpp-types-aligned_storage.html">std::aligned_storage</a></span> &#26469;&#33719;&#21462;&#32463;&#36807;&#36866;&#24403;&#23545;&#40784;&#30340;&#23384;&#20648;&#21306;&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></td>
</tr>
</table>
<p>&#27599;&#20010;&#23545;&#35937;&#31867;&#22411;&#22312;&#35813;&#31867;&#22411;&#30340;&#25152;&#26377;&#23545;&#35937;&#19978;&#24378;&#21046;&#35813;&#31867;&#22411;&#30340;&#23545;&#40784;&#35201;&#27714;<span class="t-rev-inl t-since-cxx11"><span>&#65307;&#21487;&#20197;&#20351;&#29992; <a href="cpp-language-alignas.html"><code>alignas</code></a> &#26469;&#35201;&#27714;&#26356;&#20005;&#26684;&#30340;&#23545;&#40784;&#65288;&#26356;&#22823;&#30340;&#23545;&#40784;&#35201;&#27714;&#65289;</span> <span><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></span></span>&#12290;</p>
<p>&#20026;&#20102;&#20351;<a href="cpp-language-class.html">&#31867;</a>&#20013;&#30340;&#25152;&#26377;&#38750;&#38745;&#24577;&#25104;&#21592;&#37117;&#31526;&#21512;&#23545;&#40784;&#35201;&#27714;&#65292;&#20250;&#22312;&#19968;&#20123;&#25104;&#21592;&#21518;&#38754;&#25554;&#20837;&#19968;&#20123;<i>&#22635;&#20805;</i>&#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="co1">// S &#31867;&#22411;&#30340;&#23545;&#35937;&#21487;&#20197;&#22312;&#20219;&#20309;&#22320;&#22336;&#19978;&#20998;&#37197;</span>
<span class="co1">// &#22240;&#20026; S.a &#21644; S.b &#37117;&#21487;&#20197;&#22312;&#20219;&#20309;&#22320;&#22336;&#19978;&#20998;&#37197;</span>
<span class="kw1">struct</span> S <span class="br0">{</span>
<span class="kw4">char</span> a<span class="sy4">;</span> <span class="co1">// &#22823;&#23567;&#65306;1&#65292;&#23545;&#40784;&#65306;1</span>
<span class="kw4">char</span> b<span class="sy4">;</span> <span class="co1">// &#22823;&#23567;&#65306;1&#65292;&#23545;&#40784;&#65306;1</span>
<span class="br0">}</span><span class="sy4">;</span> <span class="co1">// &#22823;&#23567;&#65306;2&#65292;&#23545;&#40784;&#65306;1</span>
<span class="co1">// X &#31867;&#22411;&#30340;&#23545;&#35937;&#21482;&#33021;&#22312; 4 &#23383;&#33410;&#36793;&#30028;&#19978;&#20998;&#37197;</span>
<span class="co1">// &#22240;&#20026; X.n &#24517;&#39035;&#22312; 4 &#23383;&#33410;&#36793;&#30028;&#19978;&#20998;&#37197;</span>
<span class="co1">// &#22240;&#20026; int &#30340;&#23545;&#40784;&#35201;&#27714;&#65288;&#36890;&#24120;&#65289;&#23601;&#26159; 4</span>
<span class="kw1">struct</span> X <span class="br0">{</span>
<span class="kw4">int</span> n<span class="sy4">;</span> <span class="co1">// &#22823;&#23567;&#65306;4&#65292;&#23545;&#40784;&#65306;4</span>
<span class="kw4">char</span> c<span class="sy4">;</span> <span class="co1">// &#22823;&#23567;&#65306;1&#65292;&#23545;&#40784;&#65306;1</span>
<span class="co1">// &#19977;&#20010;&#22635;&#20805;&#23383;&#33410;</span>
<span class="br0">}</span><span class="sy4">;</span> <span class="co1">// &#22823;&#23567;&#65306;8&#65292;&#23545;&#40784;&#65306;4</span>
<span class="kw4">int</span> main<span class="br0">(</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;sizeof(S) = &quot;</span> <span class="sy1">&lt;&lt;</span> sizeof<span class="br0">(</span>S<span class="br0">)</span>
<span class="sy1">&lt;&lt;</span> <span class="st0">&quot; alignof(S) = &quot;</span> <span class="sy1">&lt;&lt;</span> alignof<span class="br0">(</span>S<span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;sizeof(X) = &quot;</span> <span class="sy1">&lt;&lt;</span> sizeof<span class="br0">(</span>X<span class="br0">)</span>
<span class="sy1">&lt;&lt;</span> <span class="st0">&quot; alignof(X) = &quot;</span> <span class="sy1">&lt;&lt;</span> alignof<span class="br0">(</span>X<span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#21487;&#33021;&#30340;&#36755;&#20986;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="text source-text">
<pre class="de1">sizeof(S) = 2 alignof(S) = 1
sizeof(X) = 8 alignof(X) = 4</pre></div>
</div>
</div>
<p>&#26368;&#24369;&#30340;&#23545;&#40784;&#65288;&#26368;&#23567;&#30340;&#23545;&#40784;&#35201;&#27714;&#65289;&#26159; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">char</span></span></span>&#12289;<span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">signed</span> <span class="kw4">char</span></span></span> &#21644; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">unsigned</span> <span class="kw4">char</span></span></span> &#30340;&#23545;&#40784;&#65292;&#31561;&#20110; 1 &#65307;&#25152;&#26377;&#31867;&#22411;&#20013;&#26368;&#22823;&#30340;<i>&#22522;&#30784;&#23545;&#40784;&#65288;fundamental alignment&#65289;</i>&#26159;&#23454;&#29616;&#23450;&#20041;&#30340;<span class="t-rev-inl t-since-cxx11"><span>&#65292;&#24182;&#31561;&#20110; <span class="t-lc"><a href="cpp-types-max_align_t.html">std::max_align_t</a></span> &#30340;&#23545;&#40784;&#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>&#24403;&#20351;&#29992; <a href="cpp-language-alignas.html"><code>alignas</code></a> &#20351;&#26576;&#20010;&#31867;&#22411;&#30340;&#23545;&#40784;&#27604; <span class="t-lc"><a href="cpp-types-max_align_t.html">std::max_align_t</a></span> &#30340;&#26356;&#20005;&#26684;&#65288;&#26356;&#22823;&#65289;&#26102;&#65292;&#31216;&#20854;&#20026;&#20855;&#26377;<i>&#25193;&#23637;&#23545;&#40784;&#65288;extended alignment&#65289;</i>&#35201;&#27714;&#30340;&#31867;&#22411;&#12290;&#20855;&#26377;&#25193;&#23637;&#23545;&#40784;&#30340;&#31867;&#22411;&#25110;&#21253;&#21547;&#20855;&#26377;&#25193;&#23637;&#23545;&#40784;&#30340;&#38750;&#38745;&#24577;&#25104;&#21592;&#30340;&#31867;&#31867;&#22411;&#31216;&#20026;<i>&#36807;&#23545;&#40784;&#65288;over-aligned&#65289;&#31867;&#22411;</i>&#12290; <span class="t-rev-inl t-until-cxx17"><span><a href="cpp-language-new.html">new &#34920;&#36798;&#24335;</a>&#12289;</span> <span><span class="t-mark-rev t-until-cxx17">(C++17 &#21069;)</span></span></span><span class="t-lc"><a href="cpp-memory-allocator-allocate.html">std::allocator::allocate</a></span> <span class="t-rev-inl t-until-cxx20"><span>&#21644; <span class="t-lc"><a href="cpp-memory-get_temporary_buffer.html">std::get_temporary_buffer</a></span></span> <span><span class="t-mark-rev t-until-cxx20">(C++20 &#21069;)</span></span></span> &#26159;&#21542;&#25903;&#25345;&#36807;&#23545;&#40784;&#31867;&#22411;&#26159;&#30001;&#23454;&#29616;&#23450;&#20041;&#30340;&#12290;&#20197;&#36807;&#23545;&#40784;&#31867;&#22411;&#23454;&#20363;&#21270;&#30340;<a href="cpp-named_req-Allocator.html"><span style="font-style:italic">&#20998;&#37197;&#22120;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(Allocator)</span></a> &#20801;&#35768;&#22312;&#32534;&#35793;&#26399;&#21457;&#29983;&#23454;&#20363;&#21270;&#22833;&#36133;&#65292;&#22312;&#36816;&#34892;&#26102;&#25243;&#20986; <span class="t-lc"><a href="cpp-memory-new-bad_alloc.html">std::bad_alloc</a></span> &#24322;&#24120;&#65292;&#38745;&#40664;&#24573;&#30053;&#19981;&#25903;&#25345;&#30340;&#23545;&#40784;&#35201;&#27714;&#65292;&#20063;&#20801;&#35768;&#27491;&#30830;&#22320;&#22788;&#29702;&#23427;&#20204;&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#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/P0593R6">P0593R6</a></td>
<td>C++98</td>
<td>&#20808;&#21069;&#30340;&#23545;&#35937;&#27169;&#22411;&#19981;&#25903;&#25345;&#26631;&#20934;&#24211;&#25152;&#35201;&#27714;&#30340;&#35768;&#22810;&#26377;&#29992;&#30340;&#25163;&#27861;&#19988;&#19982; C &#20013;&#30340;&#26377;&#25928;&#31867;&#22411;&#19981;&#20860;&#23481;</td>
<td>&#28155;&#21152;&#20102;&#38544;&#24335;&#23545;&#35937;&#21019;&#24314;</td>
</tr>
</table>
<h3><span class="mw-headline" id=".E5.8F.82.E8.80.83">&#21442;&#32771;</span></h3>
<table class="t-dsc-begin"></table>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>