<?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 Destructor]]></title><description><![CDATA[<p>Ich habe gerade gelesen, dass bei dem Code</p>
<pre><code class="language-cpp">Base* base = new IrgendEineVonBaseAbgeleiteteKlasse();
delete base;
</code></pre>
<p>nur der Destructor von Base aufgerufen wird, nicht aber der von &quot;IrgendEineVonBaseAbgeleiteteKlasse&quot;. Darum soll man deren Destructor als virtual deklarieren.<br />
Verstehe ich das also richtig, dass wenn alle Klassen meiner Library von einer gemeinsamen Klasse &quot;Base&quot; abgeleitet sind die virtuelle Funktionen besitzt damit alle davon abgeleiteten Klassen virtuelle Destructoren haben müssen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/287731/virtual-destructor</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 07:46:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/287731.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 03 Jun 2011 00:15:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to virtual Destructor on Fri, 03 Jun 2011 00:15:29 GMT]]></title><description><![CDATA[<p>Ich habe gerade gelesen, dass bei dem Code</p>
<pre><code class="language-cpp">Base* base = new IrgendEineVonBaseAbgeleiteteKlasse();
delete base;
</code></pre>
<p>nur der Destructor von Base aufgerufen wird, nicht aber der von &quot;IrgendEineVonBaseAbgeleiteteKlasse&quot;. Darum soll man deren Destructor als virtual deklarieren.<br />
Verstehe ich das also richtig, dass wenn alle Klassen meiner Library von einer gemeinsamen Klasse &quot;Base&quot; abgeleitet sind die virtuelle Funktionen besitzt damit alle davon abgeleiteten Klassen virtuelle Destructoren haben müssen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072606</guid><dc:creator><![CDATA[StellerFragen]]></dc:creator><pubDate>Fri, 03 Jun 2011 00:15:29 GMT</pubDate></item><item><title><![CDATA[Reply to virtual Destructor on Fri, 03 Jun 2011 00:53:01 GMT]]></title><description><![CDATA[<p>Ja.<br />
Aber &quot;virtual&quot; brauchste nur vor den Basisklassendestruktor zu schreiben, dadurch sind die Destruktoren der Erben automatisch auch virtuell.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072608</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072608</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 03 Jun 2011 00:53:01 GMT</pubDate></item><item><title><![CDATA[Reply to virtual Destructor on Fri, 03 Jun 2011 06:28:59 GMT]]></title><description><![CDATA[<p>StellerFragen schrieb:</p>
<blockquote>
<p>Verstehe ich das also richtig, dass wenn alle Klassen meiner Library von einer gemeinsamen Klasse &quot;Base&quot; abgeleitet sind die virtuelle Funktionen besitzt damit alle davon abgeleiteten Klassen virtuelle Destructoren haben müssen?</p>
</blockquote>
<p>Zuerst mal muss die Basisklasse einen virtuellen Destruktor haben! Danach siehe Post von Volkard.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072636</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072636</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Fri, 03 Jun 2011 06:28:59 GMT</pubDate></item><item><title><![CDATA[Reply to virtual Destructor on Fri, 03 Jun 2011 06:53:14 GMT]]></title><description><![CDATA[<p>Ich würde allerdings wie bei allen virtuellen Funktionen das <code>virtual</code> immer davor schreiben. Im nächsten Standard gibts zudem <code>override</code> ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072641</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072641</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 03 Jun 2011 06:53:14 GMT</pubDate></item><item><title><![CDATA[Reply to virtual Destructor on Fri, 03 Jun 2011 23:23:33 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Ja.<br />
Aber &quot;virtual&quot; brauchste nur vor den Basisklassendestruktor zu schreiben, dadurch sind die Destruktoren der Erben automatisch auch virtuell.</p>
</blockquote>
<p>Achso, gilt das das dann auch für alle anderen Funktionen wenn ich diese als virtual deklariere. Ist also</p>
<pre><code class="language-cpp">class Base
{
    virtual void Function();
};

class Derived : public Base
{
    virtual void Function();
};
</code></pre>
<p>das gleiche wie</p>
<pre><code class="language-cpp">class Base
{
    virtual void Function();
};

class Derived : public Base
{
    void Function();
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2073086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073086</guid><dc:creator><![CDATA[StellerFragen]]></dc:creator><pubDate>Fri, 03 Jun 2011 23:23:33 GMT</pubDate></item><item><title><![CDATA[Reply to virtual Destructor on Fri, 03 Jun 2011 23:54:13 GMT]]></title><description><![CDATA[<p>Ja. Ich schreibe virtual aber dennoch hin, da ich es übersichtlicher finde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2073096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073096</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 03 Jun 2011 23:54:13 GMT</pubDate></item></channel></rss>