<?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[Destruktor wird nicht aufgerufen, wenn Objekt über Zeiger von Typ der Mutterklasse gelöscht wird?]]></title><description><![CDATA[<p>Hallo,<br />
Hab mich eben hier angemeldet, da mir eben zum ersten mal etwas sehr merkwürdiges aufgefallen ist:<br />
Ich speichere Zeiger auf Objekte in einer std::list, welche alle vom gleichen Typ abgeleitet sind (Kind : Mutter). Wenn ich nun alle Objekte in der list löschen möchte, gehe ich mit einem Iterator über meine Liste und rufe delete für das Objekt auf (delete *iter oder mutter = *iter; delete mutter). Allerdings wird dabei der Destruktor der Kind-Objekte nicht aufgerufen. Nur wenn ich mittels dynamic_cast den Zeiger Typ Mutter* in einen Kind* verwandle und anschließend delete kind aufrufe, wird der Destruktor aufgerufen.<br />
Bisher dachte ich immer, die Laufzeittypinformationen würden für solche Fälle ausreichen? Oder hab ich das schlicht und einfach schon immer übersehen und es hat so seine Ordnung?<br />
Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/194674/destruktor-wird-nicht-aufgerufen-wenn-objekt-über-zeiger-von-typ-der-mutterklasse-gelöscht-wird</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 15:45:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/194674.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 09 Oct 2007 17:39:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Destruktor wird nicht aufgerufen, wenn Objekt über Zeiger von Typ der Mutterklasse gelöscht wird? on Tue, 09 Oct 2007 17:39:59 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Hab mich eben hier angemeldet, da mir eben zum ersten mal etwas sehr merkwürdiges aufgefallen ist:<br />
Ich speichere Zeiger auf Objekte in einer std::list, welche alle vom gleichen Typ abgeleitet sind (Kind : Mutter). Wenn ich nun alle Objekte in der list löschen möchte, gehe ich mit einem Iterator über meine Liste und rufe delete für das Objekt auf (delete *iter oder mutter = *iter; delete mutter). Allerdings wird dabei der Destruktor der Kind-Objekte nicht aufgerufen. Nur wenn ich mittels dynamic_cast den Zeiger Typ Mutter* in einen Kind* verwandle und anschließend delete kind aufrufe, wird der Destruktor aufgerufen.<br />
Bisher dachte ich immer, die Laufzeittypinformationen würden für solche Fälle ausreichen? Oder hab ich das schlicht und einfach schon immer übersehen und es hat so seine Ordnung?<br />
Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1381510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1381510</guid><dc:creator><![CDATA[chris_phz]]></dc:creator><pubDate>Tue, 09 Oct 2007 17:39:59 GMT</pubDate></item><item><title><![CDATA[Reply to Destruktor wird nicht aufgerufen, wenn Objekt über Zeiger von Typ der Mutterklasse gelöscht wird? on Tue, 09 Oct 2007 17:47:10 GMT]]></title><description><![CDATA[<p>Soweit ich weiß, muss der Destruktor einer Klasse von der geerbt wird, virtuell sein, damit der Destrujtor der abgeleiteten Klasse aufgerufen wird.</p>
<p>Der gcc gibt soweit ich mich erinnere auch eine Warnung aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1381513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1381513</guid><dc:creator><![CDATA[The-Kenny]]></dc:creator><pubDate>Tue, 09 Oct 2007 17:47:10 GMT</pubDate></item><item><title><![CDATA[Reply to Destruktor wird nicht aufgerufen, wenn Objekt über Zeiger von Typ der Mutterklasse gelöscht wird? on Tue, 09 Oct 2007 18:55:52 GMT]]></title><description><![CDATA[<p>Ahja, das wars auch! danke!<br />
Wär angebracht, dass der VC-Kompiler da ne Warnung wirft <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1381561</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1381561</guid><dc:creator><![CDATA[chris_phz]]></dc:creator><pubDate>Tue, 09 Oct 2007 18:55:52 GMT</pubDate></item><item><title><![CDATA[Reply to Destruktor wird nicht aufgerufen, wenn Objekt über Zeiger von Typ der Mutterklasse gelöscht wird? on Tue, 09 Oct 2007 19:10:06 GMT]]></title><description><![CDATA[<p>chris_phz schrieb:</p>
<blockquote>
<p>Ahja, das wars auch! danke!<br />
Wär angebracht, dass der VC-Kompiler da ne Warnung wirft <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Tut er auch (C4265). aber die Leute sind zu faul, es einzuschalten.<br />
Edit: Allerdings warnt er nur, wenn der Destruktor explizit deklariert wird, nicht beim implizit deklarierten Destruktor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1381566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1381566</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 09 Oct 2007 19:10:06 GMT</pubDate></item></channel></rss>