<?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[virtual dtor]]></title><description><![CDATA[<p>Ich weiß - das Thema gibts allein hier im Forum schon ca. 7,3 Millionen Mal und<br />
eigentlich dachte ich ja auch, es verstanden zu haben.<br />
Aber nachdem ich ein paar der Thread noch mal durchgelesen habe, habe ich das versucht:</p>
<pre><code class="language-cpp">struct a
	{
		a (void)
			{};
		/*virtual*/ ~a (void)
			{};
	};

struct b : public a
	{
		b (void)
			{};
		~b (void)
			{};
	};

int main (int argc, char* argv[]) 
{
	a *bla = new a;
	delete bla;
	b *blub = new b;
	delete blub;
};
</code></pre>
<p>egal, ob mit oder ohne virtual, immer wird auch der destruktor von a aufgerufen - wieso das?<br />
ich dachte ja immer, dass man den dtor als virtual deklariert, damit er mit aufgerufen wird, wenn man die instanz einer abgeleitete klasse löscht und wenn er nicht virtual ist die Instanz des Basisobjekts weiter im Speicher rumdümpelt? Oo</p>
<p>danke schon mal</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/216715/virtual-dtor</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 05:04:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/216715.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 27 Jun 2008 12:56:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to virtual dtor on Fri, 27 Jun 2008 12:56:36 GMT]]></title><description><![CDATA[<p>Ich weiß - das Thema gibts allein hier im Forum schon ca. 7,3 Millionen Mal und<br />
eigentlich dachte ich ja auch, es verstanden zu haben.<br />
Aber nachdem ich ein paar der Thread noch mal durchgelesen habe, habe ich das versucht:</p>
<pre><code class="language-cpp">struct a
	{
		a (void)
			{};
		/*virtual*/ ~a (void)
			{};
	};

struct b : public a
	{
		b (void)
			{};
		~b (void)
			{};
	};

int main (int argc, char* argv[]) 
{
	a *bla = new a;
	delete bla;
	b *blub = new b;
	delete blub;
};
</code></pre>
<p>egal, ob mit oder ohne virtual, immer wird auch der destruktor von a aufgerufen - wieso das?<br />
ich dachte ja immer, dass man den dtor als virtual deklariert, damit er mit aufgerufen wird, wenn man die instanz einer abgeleitete klasse löscht und wenn er nicht virtual ist die Instanz des Basisobjekts weiter im Speicher rumdümpelt? Oo</p>
<p>danke schon mal</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1536987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1536987</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 27 Jun 2008 12:56:36 GMT</pubDate></item><item><title><![CDATA[Reply to virtual dtor on Fri, 27 Jun 2008 13:02:57 GMT]]></title><description><![CDATA[<p>virtual -&gt; Destruktor des dynamischen Typs (der abgeleiteten Klasse) wird aufgerufen, auch wenn der statische Typ ein anderer ist.<br />
non-virtual -&gt; Destruktor des statischen Typs wird aufgerufen.</p>
<p>Destruktoren von Basisklassen werden <strong>immer</strong> implizit aufgerufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1536992</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1536992</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 27 Jun 2008 13:02:57 GMT</pubDate></item><item><title><![CDATA[Reply to virtual dtor on Fri, 27 Jun 2008 13:06:11 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>virtual -&gt; Destruktor des dynamischen Typs (der abgeleiteten Klasse) wird aufgerufen, auch wenn der statische Typ ein anderer ist.</p>
</blockquote>
<p>Ein anderer als was?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1536994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1536994</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 27 Jun 2008 13:06:11 GMT</pubDate></item><item><title><![CDATA[Reply to virtual dtor on Fri, 27 Jun 2008 13:14:55 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class Base {
  public: virtual ~Base() {}
};
class Derived {
  public: virtual ~Derived() {}
};
int main() {
  Base* b = new Derived();
  delete b;
}
</code></pre>
<p>Ohne virtual würde hier nur der Destruktor von Base aufgerufen werden. Der Derived-Anteil würde nicht gelöscht werden.<br />
Mit virtual wird der Destruktor von Derived und der von Base aufgerufen, womit das Objekt vollständig gelöscht wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1536999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1536999</guid><dc:creator><![CDATA[OhneName]]></dc:creator><pubDate>Fri, 27 Jun 2008 13:14:55 GMT</pubDate></item><item><title><![CDATA[Reply to virtual dtor on Fri, 27 Jun 2008 13:21:34 GMT]]></title><description><![CDATA[<p>Und was ist eigentlich, wenn man keinen eigenen Destruktor erstellt? Ist der vom Compiler bereitgestellte Destruktor auch <code>virtual</code> ? Kaum oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1537002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1537002</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 27 Jun 2008 13:21:34 GMT</pubDate></item><item><title><![CDATA[Reply to virtual dtor on Fri, 27 Jun 2008 13:26:00 GMT]]></title><description><![CDATA[<p>Nein, der Default-Dtor ist nicht automatisch virtuell.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1537004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1537004</guid><dc:creator><![CDATA[OhneName]]></dc:creator><pubDate>Fri, 27 Jun 2008 13:26:00 GMT</pubDate></item><item><title><![CDATA[Reply to virtual dtor on Fri, 27 Jun 2008 13:35:33 GMT]]></title><description><![CDATA[<p>Wenn der Destruktor der Basisklasse virtual ist, dann ist auch der Destruktor aller davon abgeleiteten Klassen virtual, egal ob selber erstellt oder nicht.<br />
Standard 12.4 7</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1537013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1537013</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 27 Jun 2008 13:35:33 GMT</pubDate></item><item><title><![CDATA[Reply to virtual dtor on Fri, 27 Jun 2008 15:09:04 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Wenn der Destruktor der Basisklasse virtual ist, dann ist auch der Destruktor aller davon abgeleiteten Klassen virtual, egal ob selber erstellt oder nicht.<br />
Standard 12.4 7</p>
</blockquote>
<p>Ich denke, dass es Nexus um der Base-dtor ging und nicht um die Ableitungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1537060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1537060</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 27 Jun 2008 15:09:04 GMT</pubDate></item><item><title><![CDATA[Reply to virtual dtor on Fri, 27 Jun 2008 15:11:29 GMT]]></title><description><![CDATA[<p>Ich hatte mich auf den Beitrag von <em>OhneName</em> bezogen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1537063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1537063</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 27 Jun 2008 15:11:29 GMT</pubDate></item><item><title><![CDATA[Reply to virtual dtor on Fri, 27 Jun 2008 19:50:49 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>LordJaxom schrieb:</p>
<blockquote>
<p>virtual -&gt; Destruktor des dynamischen Typs (der abgeleiteten Klasse) wird aufgerufen, auch wenn der statische Typ ein anderer ist.</p>
</blockquote>
<p>Ein anderer als was?</p>
</blockquote>
<p>Der Destruktor des dynamischen Typs wird aufgerufen, auch wenn der statische Typ ein anderer als der dynamische Typ ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1537191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1537191</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 27 Jun 2008 19:50:49 GMT</pubDate></item></channel></rss>