<?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[Nicht virtueller Destruktor -&amp;gt; undefiniertes Verhalten?]]></title><description><![CDATA[<p><a href="http://groups.google.com/group/comp.lang.c++/browse_thread/thread/74706626a50511e3/dd36696bd6cc80a8?hl=en#dd36696bd6cc80a8" rel="nofollow">http://groups.google.com/group/comp.lang.c++/browse_thread/thread/74706626a50511e3/dd36696bd6cc80a8?hl=en#dd36696bd6cc80a8</a></p>
<p>Ich hätte gesagt es führt zu<br />
C::C()<br />
B::B()<br />
A::A()<br />
A::~A()</p>
<p>Destruktor ist im Grunde ja auch nur ne normale Methode, nur dass sie implizit aufgerufen wird, oder nicht?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/130189/nicht-virtueller-destruktor-gt-undefiniertes-verhalten</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 14:02:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/130189.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 20 Dec 2005 17:10:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Nicht virtueller Destruktor -&amp;gt; undefiniertes Verhalten? on Tue, 20 Dec 2005 17:10:29 GMT]]></title><description><![CDATA[<p><a href="http://groups.google.com/group/comp.lang.c++/browse_thread/thread/74706626a50511e3/dd36696bd6cc80a8?hl=en#dd36696bd6cc80a8" rel="nofollow">http://groups.google.com/group/comp.lang.c++/browse_thread/thread/74706626a50511e3/dd36696bd6cc80a8?hl=en#dd36696bd6cc80a8</a></p>
<p>Ich hätte gesagt es führt zu<br />
C::C()<br />
B::B()<br />
A::A()<br />
A::~A()</p>
<p>Destruktor ist im Grunde ja auch nur ne normale Methode, nur dass sie implizit aufgerufen wird, oder nicht?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/946474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/946474</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Tue, 20 Dec 2005 17:10:29 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht virtueller Destruktor -&amp;gt; undefiniertes Verhalten? on Tue, 20 Dec 2005 17:14:51 GMT]]></title><description><![CDATA[<p>FireFlow schrieb:</p>
<blockquote>
<p><a href="http://groups.google.com/group/comp.lang.c++/browse_thread/thread/74706626a50511e3/dd36696bd6cc80a8?hl=en#dd36696bd6cc80a8" rel="nofollow">http://groups.google.com/group/comp.lang.c++/browse_thread/thread/74706626a50511e3/dd36696bd6cc80a8?hl=en#dd36696bd6cc80a8</a></p>
<p>Ich hätte gesagt es führt zu<br />
C::C()<br />
B::B()<br />
A::A()<br />
A::~A()</p>
<p>Destruktor ist im Grunde ja auch nur ne normale Methode, nur dass sie implizit aufgerufen wird, oder nicht?</p>
<p>Gruß</p>
</blockquote>
<p>nein, und zwar ganz einfach deshalb, weil der standard sagt, dass es so ist (UB). über das verhalten bestimmter implementationen brauchen wir da gar nicht diskutieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/946479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/946479</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 20 Dec 2005 17:14:51 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht virtueller Destruktor -&amp;gt; undefiniertes Verhalten? on Tue, 20 Dec 2005 18:16:24 GMT]]></title><description><![CDATA[<p>Wo steht das? O.o</p>
<p>Habs bei Special Methods -&gt; Destructor und bei Derived Classes -&gt; Virtual funtions nicht gefunden. Oder ist es gerade undefiniert weils nicht da steht?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/946525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/946525</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Tue, 20 Dec 2005 18:16:24 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht virtueller Destruktor -&amp;gt; undefiniertes Verhalten? on Tue, 20 Dec 2005 19:06:16 GMT]]></title><description><![CDATA[<p>FireFlow schrieb:</p>
<blockquote>
<p>Ich hätte gesagt es führt zu<br />
C::C()<br />
B::B()<br />
A::A()<br />
A::~A()</p>
</blockquote>
<p>Soweit sicher denkbar, aber was ist mit der Deallokation nach A::~A()?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/946542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/946542</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Tue, 20 Dec 2005 19:06:16 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht virtueller Destruktor -&amp;gt; undefiniertes Verhalten? on Tue, 20 Dec 2005 19:18:04 GMT]]></title><description><![CDATA[<p>FireFlow schrieb:</p>
<blockquote>
<p>Wo steht das? O.o</p>
<p>Habs bei Special Methods -&gt; Destructor und bei Derived Classes -&gt; Virtual funtions nicht gefunden. Oder ist es gerade undefiniert weils nicht da steht?</p>
<p>Gruß</p>
</blockquote>
<p>5.3.5/3</p>
]]></description><link>https://www.c-plusplus.net/forum/post/946550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/946550</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 20 Dec 2005 19:18:04 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht virtueller Destruktor -&amp;gt; undefiniertes Verhalten? on Tue, 20 Dec 2005 19:25:23 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>FireFlow schrieb:</p>
<blockquote>
<p>Ich hätte gesagt es führt zu<br />
C::C()<br />
B::B()<br />
A::A()<br />
A::~A()</p>
</blockquote>
<p>Soweit sicher denkbar, aber was ist mit der Deallokation nach A::~A()?</p>
</blockquote>
<p>A::~A() ruft den virtuellen Dtor von B::~B() auf, der kann aber C::~C() nicht aufrufen, da der nicht virtual ist? Also Objekt nicht vollständig abgebaut und somit undefiniertes Verhalten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/946555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/946555</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Tue, 20 Dec 2005 19:25:23 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht virtueller Destruktor -&amp;gt; undefiniertes Verhalten? on Tue, 20 Dec 2005 21:05:21 GMT]]></title><description><![CDATA[<p>Bei gängigen Desktopimplementationen sollte es klar sein was hier passiert allerdings stell dir mal vor, dass du nicht eine so schöne Speicherverwaltung hast wo du nur einen Zeiger angeben musst um Speicher frei zu geben sondern auch noch die größe des Speicherblocks. Bei einen statischen Type kann der Compiler diesen Wert leicht herleiten, sollte es sich um einen dynamischen Type handeln schmuggelt der Compiler neben dem virtuellen Dtor noch eine weitere virtuelle Funktion rein mit dessen Hilfe er diesen Wert herleiten kann. Dies würde in deinem Beispiel aber nicht funktionieren und da der Standard ja dahingehen geschrieben wurde möglichst implementationsunabhängig zu sein könnte ich mir dies als Grund durchaus vorstellen das Verhalten hier undefiniert zu lassen. Ist aber nur meine Meinung.</p>
<p>:xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/946645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/946645</guid><dc:creator><![CDATA[Ben04]]></dc:creator><pubDate>Tue, 20 Dec 2005 21:05:21 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht virtueller Destruktor -&amp;gt; undefiniertes Verhalten? on Tue, 20 Dec 2005 21:11:22 GMT]]></title><description><![CDATA[<p>Ist was anderes... Hier gehts ja nur um den Destruktor, denn für 'normale' Methoden ist das Verhalten durchaus definiert.</p>
<p>Die eigentliche Frage ist ja schon geklärt. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/946655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/946655</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Tue, 20 Dec 2005 21:11:22 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht virtueller Destruktor -&amp;gt; undefiniertes Verhalten? on Wed, 21 Dec 2005 07:25:41 GMT]]></title><description><![CDATA[<p>GPC schrieb:</p>
<blockquote>
<p>A::~A() ruft den virtuellen Dtor von B::~B() auf, der kann aber C::~C() nicht aufrufen, da der nicht virtual ist? Also Objekt nicht vollständig abgebaut und somit undefiniertes Verhalten?</p>
</blockquote>
<p>Sicher? Seit wann ruft der Destruktor denn Methoden von abgeleiteten Klassen auf? A weiß doch überhaupt nicht, daß B exisitiert.</p>
<p>(und außerdem: ~A() ist statisch, ~B() und ~C() sind virtuell (ersterer durch die Deklaration, letzterer implizit durch Vererbung))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/946766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/946766</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 21 Dec 2005 07:25:41 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht virtueller Destruktor -&amp;gt; undefiniertes Verhalten? on Wed, 21 Dec 2005 07:42:42 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>GPC schrieb:</p>
<blockquote>
<p>A::~A() ruft den virtuellen Dtor von B::~B() auf, der kann aber C::~C() nicht aufrufen, da der nicht virtual ist? Also Objekt nicht vollständig abgebaut und somit undefiniertes Verhalten?</p>
</blockquote>
<p>Sicher? Seit wann ruft der Destruktor denn Methoden von abgeleiteten Klassen auf? A weiß doch überhaupt nicht, daß B exisitiert.</p>
</blockquote>
<p>*Brett vorm Kopf hab*, Konstruktorreihenfolge ist ja &quot;Von oben nach unten&quot; und Destruktorreihenfolge &quot;Von unten nach oben&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/946780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/946780</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Wed, 21 Dec 2005 07:42:42 GMT</pubDate></item></channel></rss>