<?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[Verdeckung von virtuellen Methoden]]></title><description><![CDATA[<p>Hallo liebe C++ Commu,</p>
<p>ich mache mir z.z. Gedanken über das Verdecken (v) und Redefinieren (r) von virtuellen Methoden und habe hierzu auch einige listening gemacht, welche ich soweit verstehe bis auf eines, da mach ich heute nun schon ewig rum.</p>
<p>Volgendes Bsp. habe ich gemacht</p>
<pre><code>class A {
public:
   virtual void f() { cout &lt;&lt; &quot;A::f()&quot; &lt;&lt; endl; g(); }   //(v)(r1)
   virtual void g() { cout &lt;&lt; &quot;A::g()&quot; &lt;&lt; endl; }        //(r2)
};

class B : public A {
public:
   virtual void f(int i) { cout &lt;&lt; &quot;B::f(int)&quot; &lt;&lt; endl;  }//(v)
};

class C : public B
{
public:
   virtual void f() { cout &lt;&lt; &quot;C::f()&quot; &lt;&lt; endl; A::f(); }//(r1)
   virtual void g() { cout &lt;&lt; &quot;C::g()&quot; &lt;&lt; endl; }        //(r2)
};
</code></pre>
<p>&lt;in der Main habe ich volgendes</p>
<pre><code>int main()
{
C c;

A * aptr = &amp;c;
B * bptr = &amp;c;
C * cptr = &amp;c;

bptr-&gt;f(1);           // Aufruf von B::f(int) -&gt; kann ich nachvolziehen
bptr-&gt;A::f();         // Aufruf von A::f() und C::g() -&gt; auch klar wegen der Funktion g() in A::f()
c.f();                // Blicke ich Null die Konsole sagt: C::f(), A::f() und C::g()??? 
return 0;
}
</code></pre>
<p>Also &quot;Zeile 11&quot; besagt doch: Rufe c.f() auf, darin ist doch C::f() und A::f() basta und kein C::g mehr.</p>
<p>Eventuel kann mir jm. einen Anstoß geben. Danke und schöne Grüße an euch.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/330263/verdeckung-von-virtuellen-methoden</link><generator>RSS for Node</generator><lastBuildDate>Fri, 03 Jul 2026 11:54:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/330263.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 30 Dec 2014 22:52:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verdeckung von virtuellen Methoden on Tue, 30 Dec 2014 22:52:54 GMT]]></title><description><![CDATA[<p>Hallo liebe C++ Commu,</p>
<p>ich mache mir z.z. Gedanken über das Verdecken (v) und Redefinieren (r) von virtuellen Methoden und habe hierzu auch einige listening gemacht, welche ich soweit verstehe bis auf eines, da mach ich heute nun schon ewig rum.</p>
<p>Volgendes Bsp. habe ich gemacht</p>
<pre><code>class A {
public:
   virtual void f() { cout &lt;&lt; &quot;A::f()&quot; &lt;&lt; endl; g(); }   //(v)(r1)
   virtual void g() { cout &lt;&lt; &quot;A::g()&quot; &lt;&lt; endl; }        //(r2)
};

class B : public A {
public:
   virtual void f(int i) { cout &lt;&lt; &quot;B::f(int)&quot; &lt;&lt; endl;  }//(v)
};

class C : public B
{
public:
   virtual void f() { cout &lt;&lt; &quot;C::f()&quot; &lt;&lt; endl; A::f(); }//(r1)
   virtual void g() { cout &lt;&lt; &quot;C::g()&quot; &lt;&lt; endl; }        //(r2)
};
</code></pre>
<p>&lt;in der Main habe ich volgendes</p>
<pre><code>int main()
{
C c;

A * aptr = &amp;c;
B * bptr = &amp;c;
C * cptr = &amp;c;

bptr-&gt;f(1);           // Aufruf von B::f(int) -&gt; kann ich nachvolziehen
bptr-&gt;A::f();         // Aufruf von A::f() und C::g() -&gt; auch klar wegen der Funktion g() in A::f()
c.f();                // Blicke ich Null die Konsole sagt: C::f(), A::f() und C::g()??? 
return 0;
}
</code></pre>
<p>Also &quot;Zeile 11&quot; besagt doch: Rufe c.f() auf, darin ist doch C::f() und A::f() basta und kein C::g mehr.</p>
<p>Eventuel kann mir jm. einen Anstoß geben. Danke und schöne Grüße an euch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435447</guid><dc:creator><![CDATA[Samueli]]></dc:creator><pubDate>Tue, 30 Dec 2014 22:52:54 GMT</pubDate></item><item><title><![CDATA[Reply to Verdeckung von virtuellen Methoden on Tue, 30 Dec 2014 23:01:04 GMT]]></title><description><![CDATA[<p>A::f ruft doch wieder g auf und das ist in diesem Fall das C::g.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435451</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 30 Dec 2014 23:01:04 GMT</pubDate></item></channel></rss>