<?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]]></title><description><![CDATA[<p>Hallo ich möchte gerne wissen ob eine virtuelle Methode einer Klasse in einer vererbten Klasse auch noch als virtual gilt.</p>
<p>Also etwas in der Art:</p>
<pre><code>class base
{
    virtual void foo(){} =0;
};

class derived1 : public base
{
    foo(){ tuwas;};
};

class derived2: public derived1
{
    foo(){ tu was anderes;};
};

int main()
{
    base* item = new derived2;
    derived2.foo();
}
</code></pre>
<p>was wird nun hier ausgeführt?<br />
ich hab mal gelesen dass es dabei schwierigkeiten geben kann...<br />
falls mein beispiel völlig abwegig ist lasse ich mch gerne belehren ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/243117/virtual</link><generator>RSS for Node</generator><lastBuildDate>Sun, 20 Sep 2026 05:01:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/243117.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 12 Jun 2009 15:44:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to virtual on Fri, 12 Jun 2009 15:44:41 GMT]]></title><description><![CDATA[<p>Hallo ich möchte gerne wissen ob eine virtuelle Methode einer Klasse in einer vererbten Klasse auch noch als virtual gilt.</p>
<p>Also etwas in der Art:</p>
<pre><code>class base
{
    virtual void foo(){} =0;
};

class derived1 : public base
{
    foo(){ tuwas;};
};

class derived2: public derived1
{
    foo(){ tu was anderes;};
};

int main()
{
    base* item = new derived2;
    derived2.foo();
}
</code></pre>
<p>was wird nun hier ausgeführt?<br />
ich hab mal gelesen dass es dabei schwierigkeiten geben kann...<br />
falls mein beispiel völlig abwegig ist lasse ich mch gerne belehren ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725663</guid><dc:creator><![CDATA[shisha]]></dc:creator><pubDate>Fri, 12 Jun 2009 15:44:41 GMT</pubDate></item><item><title><![CDATA[Reply to virtual on Fri, 12 Jun 2009 15:49:10 GMT]]></title><description><![CDATA[<p>Und ich hab gelesen dass sobald eine Methode als virtuell deklariert ist das immer virtuell bleibt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /><br />
Egal ob man das &quot;virtual&quot; in abgeleiteten Klassen dazu schreibt oder nicht.<br />
Alles andere wäre ja auch Käse <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/1725666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725666</guid><dc:creator><![CDATA[Virtuo]]></dc:creator><pubDate>Fri, 12 Jun 2009 15:49:10 GMT</pubDate></item><item><title><![CDATA[Reply to virtual on Fri, 12 Jun 2009 16:15:54 GMT]]></title><description><![CDATA[<p>aber ich kann die funktionen dann schon risikofrei benutzen oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725682</guid><dc:creator><![CDATA[shisha]]></dc:creator><pubDate>Fri, 12 Jun 2009 16:15:54 GMT</pubDate></item><item><title><![CDATA[Reply to virtual on Fri, 12 Jun 2009 16:22:58 GMT]]></title><description><![CDATA[<p>shisha schrieb:</p>
<blockquote>
<p>aber ich kann die funktionen dann schon risikofrei benutzen oder?</p>
</blockquote>
<p>Ist aber nur erlaubt wenn du so einen Warnhinweis wie auf den Zigarettenschachteln daufklebst! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Was verstehst du im Zusammenhang mit Funktionen unter Risiko?</p>
<p>Wenn Basisklassen-Funktion virtual ist die abgeleitete nicht virtual wenn du auch kein virtual davor schreibst. Was spricht dagegen das in 2 Sekunden einfach auszuprobieren? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725687</guid><dc:creator><![CDATA[Pigeon]]></dc:creator><pubDate>Fri, 12 Jun 2009 16:22:58 GMT</pubDate></item><item><title><![CDATA[Reply to virtual on Fri, 12 Jun 2009 16:52:03 GMT]]></title><description><![CDATA[<p>weil die probleme laut einigen online-tutorials meist im zusammenhang mit destruktorn auftreten, und ich wüsste nicht wie ich überprüfen kann ob speicher tatsächlich freigegeben wurde...</p>
<p>gute frage an dieser stelle ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725694</guid><dc:creator><![CDATA[shisha]]></dc:creator><pubDate>Fri, 12 Jun 2009 16:52:03 GMT</pubDate></item><item><title><![CDATA[Reply to virtual on Fri, 12 Jun 2009 16:58:58 GMT]]></title><description><![CDATA[<p>Argh, sag das doch!<br />
Beim Destruktor musst du IMMER ein virtual dazu schreiben. Denn der Destruktor von A heißt anders als der von B.<br />
Bei Methoden ist das anders, die heißen immer gleich.</p>
<p>Wenn du eine Objekt über einen Basisklassenzeiger verwaltest, werden alle NICHT virtuellen Funktionen von der Basisklasse genommen. Wenn nun der Destrukto nicht virtuell ist, wird auch direkt der der Basisklasse angesprungen. Dann hast du ein Problem.</p>
<p>Bei normalen Funktionen ala &quot;void A::foo()&quot; reicht es wenn die Basisklasse das virtual deklariert, dann sollte (einigermaßen aktuellen/guten Compiler) auch keine Trouble geben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725697</guid><dc:creator><![CDATA[Virtuo]]></dc:creator><pubDate>Fri, 12 Jun 2009 16:58:58 GMT</pubDate></item><item><title><![CDATA[Reply to virtual on Fri, 12 Jun 2009 18:35:40 GMT]]></title><description><![CDATA[<p>Virtuo schrieb:</p>
<blockquote>
<p>Beim Destruktor musst du IMMER ein virtual dazu schreiben.</p>
</blockquote>
<p>Quatsch, auch hier wird das &quot;virtual&quot; durch die Bank weiter vererbt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725739</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Fri, 12 Jun 2009 18:35:40 GMT</pubDate></item></channel></rss>