<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Reihenfolge der Objektzerstörung im Destruktor]]></title><description><![CDATA[<p>Hiho,</p>
<p>ich habe eine kurze Frage zur Reihenfolge der zerstörung von Memberobjekten.</p>
<pre><code class="language-cpp">class Foo
{
    A a;
    B b;
};
</code></pre>
<p>Ist irgendwie im Standard festgelegt, dass zuerst a und dann b erzeugt wird und beim Zerstören zuerst b dran glauben muss und danach a, oder ist die Reihenfolge beliebig vom Compiler wählbar?</p>
<p>MfG Pellaeon</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/275410/reihenfolge-der-objektzerstörung-im-destruktor</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 02:01:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/275410.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 14 Oct 2010 08:42:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Reihenfolge der Objektzerstörung im Destruktor on Thu, 14 Oct 2010 08:42:01 GMT]]></title><description><![CDATA[<p>Hiho,</p>
<p>ich habe eine kurze Frage zur Reihenfolge der zerstörung von Memberobjekten.</p>
<pre><code class="language-cpp">class Foo
{
    A a;
    B b;
};
</code></pre>
<p>Ist irgendwie im Standard festgelegt, dass zuerst a und dann b erzeugt wird und beim Zerstören zuerst b dran glauben muss und danach a, oder ist die Reihenfolge beliebig vom Compiler wählbar?</p>
<p>MfG Pellaeon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1965410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1965410</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Thu, 14 Oct 2010 08:42:01 GMT</pubDate></item><item><title><![CDATA[Reply to Reihenfolge der Objektzerstörung im Destruktor on Thu, 14 Oct 2010 09:06:17 GMT]]></title><description><![CDATA[<p>Der Standard sagt in 12.4 6</p>
<blockquote>
<p>Bases and members are destroyed in the<br />
reverse order of the completion of their constructor (see 12.6.2)</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1965420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1965420</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 14 Oct 2010 09:06:17 GMT</pubDate></item><item><title><![CDATA[Reply to Reihenfolge der Objektzerstörung im Destruktor on Thu, 14 Oct 2010 09:09:58 GMT]]></title><description><![CDATA[<p>Also wäre die Frage, ob garantiert ist, dass a vor b erzeugt wird?</p>
<p>MfG Pellaeon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1965421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1965421</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Thu, 14 Oct 2010 09:09:58 GMT</pubDate></item><item><title><![CDATA[Reply to Reihenfolge der Objektzerstörung im Destruktor on Thu, 14 Oct 2010 09:12:20 GMT]]></title><description><![CDATA[<p>Ich denke, dass die Reihenfolge alleine durch das Layout der Klasse vorgegeben ist.<br />
Die Initialisierung findet also in der Reihenfolge der Deklaration statt, die Destruktion muss genau anders herum laufen. Der Compiler kann zwar zusätzliche Bytes einschieben (padding), ein Umsortieren der Elemente ist ihm aber imho nicht erlaubt.<br />
<a href="http://codepad.org/FO90kE8C" rel="nofollow">http://codepad.org/FO90kE8C</a><br />
Beim MSVC kann sogar der Kontruktor MyC folgendermaßen aussehen:</p>
<pre><code class="language-cpp">MyC() : c3(), c2(), c1() {}
</code></pre>
<p>Die Reihenfolge bleibt die Gleiche.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1965422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1965422</guid><dc:creator><![CDATA[Vicious Falcon]]></dc:creator><pubDate>Thu, 14 Oct 2010 09:12:20 GMT</pubDate></item><item><title><![CDATA[Reply to Reihenfolge der Objektzerstörung im Destruktor on Thu, 14 Oct 2010 10:27:04 GMT]]></title><description><![CDATA[<p>Und da wird keine Warnung geworfen, dass die Initialisierungsliste nicht die Reihenfolge der Member beruecksichtigt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1965460</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1965460</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Thu, 14 Oct 2010 10:27:04 GMT</pubDate></item><item><title><![CDATA[Reply to Reihenfolge der Objektzerstörung im Destruktor on Thu, 14 Oct 2010 10:59:36 GMT]]></title><description><![CDATA[<p>gcc 4.5 wirft zumindest bei -Wall eine Warnung, falls man die Elementinitialisierungsliste im Konstruktor anders sortiert als in der Klassendefinition. Er weist dann freundlich darauf hin, dass er die Reihenfolge der Initialisierungsliste _nicht_ beachtet, sondern nur die der Klassendefinition. Das ist die berühmte &quot;will be initialized after&quot;-Warning.</p>
<p>Phil</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1965476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1965476</guid><dc:creator><![CDATA[PhilippM]]></dc:creator><pubDate>Thu, 14 Oct 2010 10:59:36 GMT</pubDate></item><item><title><![CDATA[Reply to Reihenfolge der Objektzerstörung im Destruktor on Thu, 14 Oct 2010 12:01:20 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>Und da wird keine Warnung geworfen, dass die Initialisierungsliste nicht die Reihenfolge der Member beruecksichtigt?</p>
</blockquote>
<p>Nein, leider nicht.</p>
<p>Aber wenn man sich grundsätzlich angewöhnt Membervariablen und Initialisierungsliste in der gleichen Reihenfolge (und vollständig) zu halten, reduziert man die Fehlergefahr auch ohne Warnung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1965519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1965519</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 14 Oct 2010 12:01:20 GMT</pubDate></item><item><title><![CDATA[Reply to Reihenfolge der Objektzerstörung im Destruktor on Thu, 14 Oct 2010 12:33:41 GMT]]></title><description><![CDATA[<p>Pellaeon schrieb:</p>
<blockquote>
<p>Also wäre die Frage, ob garantiert ist, dass a vor b erzeugt wird?</p>
</blockquote>
<p>a wird garantiert vor b initialisiert.<br />
Achte mal auf Deinen Satzbau/Grammatik. :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1965538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1965538</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Thu, 14 Oct 2010 12:33:41 GMT</pubDate></item></channel></rss>