<?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[Frage zu virtual]]></title><description><![CDATA[<p>Kurze ja/nein Fragen:</p>
<pre><code class="language-cpp">/////////
// Base.h

CBase
{
    // ...
public:
    virtual void VirtualFunc();
    void BaseFunction();
    // ...
}

///////////
// Base.cpp

void CBase::VirtualFunc()
{
    // Base Virtual Function
}

void CBase::BaseFunction()
{
    VirtualFunc();
}

////////////
// Derived.h

class CDerived : public CBase
{
    // ...
    void VirtualFunc();
    void BaseFunction();
    // ...
}

//////////////
// Derived.cpp

void CDerived::VirtualFunc()
{
    // Derived Virtual Function
}

void CDerived::BaseFunction()
{
    CBase::BaseFunction();
}
</code></pre>
<p>Meine Fragen:<br />
Wenn ich BaseFunction von CDerived aufrufe, wird dann VirtualFunc von CDerived oder von CBase in der CBase::BaseFunction aufgerufen?<br />
Wenn ich ein CBase Objekt habe und die Funktion VirtualFunc aufrufe, wird dann die Funktion CDerived::VirtualFunc aufgerufen?</p>
<p>Jo und das ist es glaub ich schon.</p>
<p>Danke für die Antworten.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/152139/frage-zu-virtual</link><generator>RSS for Node</generator><lastBuildDate>Sun, 06 Sep 2026 22:46:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/152139.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 03 Jul 2006 12:24:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu virtual on Mon, 03 Jul 2006 12:24:37 GMT]]></title><description><![CDATA[<p>Kurze ja/nein Fragen:</p>
<pre><code class="language-cpp">/////////
// Base.h

CBase
{
    // ...
public:
    virtual void VirtualFunc();
    void BaseFunction();
    // ...
}

///////////
// Base.cpp

void CBase::VirtualFunc()
{
    // Base Virtual Function
}

void CBase::BaseFunction()
{
    VirtualFunc();
}

////////////
// Derived.h

class CDerived : public CBase
{
    // ...
    void VirtualFunc();
    void BaseFunction();
    // ...
}

//////////////
// Derived.cpp

void CDerived::VirtualFunc()
{
    // Derived Virtual Function
}

void CDerived::BaseFunction()
{
    CBase::BaseFunction();
}
</code></pre>
<p>Meine Fragen:<br />
Wenn ich BaseFunction von CDerived aufrufe, wird dann VirtualFunc von CDerived oder von CBase in der CBase::BaseFunction aufgerufen?<br />
Wenn ich ein CBase Objekt habe und die Funktion VirtualFunc aufrufe, wird dann die Funktion CDerived::VirtualFunc aufgerufen?</p>
<p>Jo und das ist es glaub ich schon.</p>
<p>Danke für die Antworten.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1090669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1090669</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Mon, 03 Jul 2006 12:24:37 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu virtual on Mon, 03 Jul 2006 12:35:01 GMT]]></title><description><![CDATA[<p>Ja, es wird die virtuelle Funktion aufgerufen. Es hängt immer nur von der Funktion ab, welche aufgerufen wird, nicht vom Kontext, also ob die Aufrufstelle eine virtuelle Funktion ist oder nicht. Es wäre auch ziemlich überraschend, wenn der selbe Funktionsaufruf in einer virtuellen und einer nicht virtuellen Funktion völlig unterschiedlichen Effekt hätte.</p>
<p>Ein genereller Tip für solche Fragen: Probier's aus. Schreib einfach in jede Funktion ein cout &lt;&lt; &quot;Funktionsname&quot; bzw. auf vielen Compilern einfach cout &lt;&lt; __FUNC__; rein, schreib die main und schau Dir an, welche Ausgaben gemacht werden. Oder nimm einen Debugger und durchlaufe den Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1090676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1090676</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Mon, 03 Jul 2006 12:35:01 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu virtual on Mon, 03 Jul 2006 12:38:40 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Wenn ich BaseFunction von CDerived aufrufe, wird dann VirtualFunc von CDerived oder von CBase in der CBase::BaseFunction aufgerufen?</p>
</blockquote>
<p>die Derived-Version</p>
<blockquote>
<p>Wenn ich ein CBase Objekt habe und die Funktion VirtualFunc aufrufe, wird dann die Funktion CDerived::VirtualFunc aufgerufen?</p>
</blockquote>
<p>die Base-Version</p>
<p>(es hängt nur vom zugrundeliegenden Objekt ab, welche Version der virtuellen Funktion aufgerufen wird)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1090679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1090679</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 03 Jul 2006 12:38:40 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu virtual on Mon, 03 Jul 2006 13:49:55 GMT]]></title><description><![CDATA[<p>Ok danke ... dann habe ich das virtual Gebiet nun doch vollständig begriffen, naja zumindest was die Funktionen betrifft. Eine virtuelle Basisklasse habe ich noch nicht gebraucht.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1090715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1090715</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Mon, 03 Jul 2006 13:49:55 GMT</pubDate></item></channel></rss>