<?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 Verständnisfrage]]></title><description><![CDATA[<p>Wenn die Basisklasse die Funktion 'foo()' nicht als virtual deklariert hat, dann darf ich sie auch nicht in der Subklasse als virtual deklarieren. Richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/271108/virtual-verständnisfrage</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 17:04:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/271108.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 23 Jul 2010 12:05:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to virtual Verständnisfrage on Fri, 23 Jul 2010 12:05:50 GMT]]></title><description><![CDATA[<p>Wenn die Basisklasse die Funktion 'foo()' nicht als virtual deklariert hat, dann darf ich sie auch nicht in der Subklasse als virtual deklarieren. Richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930582</guid><dc:creator><![CDATA[Mitfühlender]]></dc:creator><pubDate>Fri, 23 Jul 2010 12:05:50 GMT</pubDate></item><item><title><![CDATA[Reply to virtual Verständnisfrage on Fri, 23 Jul 2010 12:15:32 GMT]]></title><description><![CDATA[<p>Darfst du schon, es macht aber die Methode in A nicht auf magische Weise virtuell, was zu merkwürdigen Ergebnissen führen kann. Beispiel:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

struct A {
  virtual ~A() { }
  void foo() { std::cout &lt;&lt; &quot;A::foo&quot; &lt;&lt; std::endl; }
};

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

struct C : public B {
  virtual void foo() { std::cout &lt;&lt; &quot;C::foo&quot; &lt;&lt; std::endl; }
};

int main() {
  C c;

  B &amp;rb = c;
  A &amp;ra = c;

  rb.foo();
  ra.foo();
}

// Ausgabe:
//
// C::foo
// A::foo
</code></pre>
<p>Es ist also in aller Regel besser, sich von solchen Schweinereien fernzuhalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930591</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930591</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Fri, 23 Jul 2010 12:15:32 GMT</pubDate></item><item><title><![CDATA[Reply to virtual Verständnisfrage on Fri, 23 Jul 2010 12:23:04 GMT]]></title><description><![CDATA[<p>seldon schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Vielen dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930605</guid><dc:creator><![CDATA[Mitfühlender]]></dc:creator><pubDate>Fri, 23 Jul 2010 12:23:04 GMT</pubDate></item></channel></rss>