<?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[override in derived dtor]]></title><description><![CDATA[<p>Hey Leute,</p>
<p>ich bin eben auf etwas abstruses gestoßen und bin mir nicht sicher warum das so funktioniert....</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

struct A {
	A(){};
	virtual ~A() { std::cout &lt;&lt; &quot;bar&quot;; };
};

struct B : public A {
	virtual ~B() override { std::cout &lt;&lt; &quot;foo&quot;; };
};

int main() {
	// your code goes here
	B();
	return 0;
}
</code></pre>
<p>Also meine überlegung ist das &quot;virtual ~B() override&quot; nicht funktionieren dürfte, da es ja nichts überschreibt. was man auch sieht wenn man den snippet ausführt. Warum meckert der compiler dann nicht beim kompilieren?</p>
<p>Hat einer dazu eine Quelle? Also warum der compiler nicht bei einem override meckert wo er nicht überschrieben kann/darf/tut.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/339041/override-in-derived-dtor</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Apr 2026 16:39:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/339041.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 29 Jul 2016 07:55:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to override in derived dtor on Fri, 29 Jul 2016 07:55:09 GMT]]></title><description><![CDATA[<p>Hey Leute,</p>
<p>ich bin eben auf etwas abstruses gestoßen und bin mir nicht sicher warum das so funktioniert....</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

struct A {
	A(){};
	virtual ~A() { std::cout &lt;&lt; &quot;bar&quot;; };
};

struct B : public A {
	virtual ~B() override { std::cout &lt;&lt; &quot;foo&quot;; };
};

int main() {
	// your code goes here
	B();
	return 0;
}
</code></pre>
<p>Also meine überlegung ist das &quot;virtual ~B() override&quot; nicht funktionieren dürfte, da es ja nichts überschreibt. was man auch sieht wenn man den snippet ausführt. Warum meckert der compiler dann nicht beim kompilieren?</p>
<p>Hat einer dazu eine Quelle? Also warum der compiler nicht bei einem override meckert wo er nicht überschrieben kann/darf/tut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2503894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2503894</guid><dc:creator><![CDATA[hallohuhublablafoo]]></dc:creator><pubDate>Fri, 29 Jul 2016 07:55:09 GMT</pubDate></item><item><title><![CDATA[Reply to override in derived dtor on Fri, 29 Jul 2016 08:25:17 GMT]]></title><description><![CDATA[<p>Naja, es überschreibt ja den Destruktor von A. Nur dass dieser dann, weil es ein Destruktor ist, trotzdem ausgeführt wird.</p>
<p>Das override bringt dir hier aber was anderes: solltest du vergessen haben, A::~A() virtual zu machen, gibt es einen Compile-Fehler. Das override ist also auch hier sinnvoll.</p>
<p>In C++11 ist das in 10.3.6 geregelt, wenn ich das gerade richtig gefunden habe:</p>
<blockquote>
<p>Even though destructors are not inherited, a destructor in a derived class overrides a base class destructor declared virtual; see 12.4 and 12.5.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2503897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2503897</guid><dc:creator><![CDATA[wob]]></dc:creator><pubDate>Fri, 29 Jul 2016 08:25:17 GMT</pubDate></item></channel></rss>