<?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[Virtuelle Methoden und dynamisch Binden]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich habe morgen eine Prüfung in Objektorientierter Programmierung, und habe leider noch ein paar Übungsaufgaben, welche ich nicht lösen kann...</p>
<p>Hier die erste Aufgabe:</p>
<p>Welche Aussage erzeugt folgendes Programm?<br />
Kennzeichne bei welchen Aufrufen von methode() dynamisch gebunden wird.</p>
<pre><code>class c1
{ public:
virtual void methode()
{ cout &lt;&lt; &quot;methode von c1 wird aufgerufen&quot; &lt;&lt; endl;
};
};

class c2: public c1
{public:
virtual void methode()
{ cout &lt;&lt; &quot;methode von c2 wird aufgerufen&quot; &lt;&lt; endl;
};
};

class c3: public c1
{ public:
virtual void methode()
{ cout &lt;&lt; &quot;methode von c3 wird aufgerufen&quot; &lt;&lt; endl;
};
};

int main()
{
c1 o_c1;
c2 o_c2;
c3 o_c3;
c1*o_p1 = &amp;o_c1;

o_c1.methode();
o_c2.methode();
o_p1-&gt;methode();

o_p1 = &amp;o_c3;
o_p1-&gt;methode();
}
</code></pre>
<p>Meine Lösung wäre Folgende: Also dynamisch gebunden wird in Zeile 31 und 34.<br />
Da ich jedoch nicht weiß, ob beim dynamisch gebinden, die methode aufgerufen wird weiß ich auch nicht ob es dort Aufrufe geben wird.</p>
<p>Deswegen sage ich einfach mal auf Verdacht, dass dies ausgegeben wird:</p>
<p>methode von c1 wurde aufgerufen<br />
methode von c2 wurde aufgerufen<br />
methode von c1 wurde aufgerufen<br />
methode von c3 wurde aufgerufen</p>
<p>Ich bin jetzt davon ausgegangen, dass beim dynamisch binden auch ein Aufruf erzeug wird. Hoffe ihr könnt mir helfen, oder eines Besseres belehren!</p>
<p>Desweiteren wird noch gefragt, wie Objekte einer Klasse erzeugt werden können, wenn die Klasse ausschließlich private Konstruktoren besitzt.<br />
Hinweis: Denke an Methoden und Member-Funktionen, die ohne ein Objekt aufgerufen werden können.</p>
<p>Leider habe ich keine Ahnung, wie das geht! Wäre super, wenn ihr mir hier auch noch helfen könntet.</p>
<p>Danke im Voraus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/327121/virtuelle-methoden-und-dynamisch-binden</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 20:22:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/327121.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 Jul 2014 15:19:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Virtuelle Methoden und dynamisch Binden on Thu, 24 Jul 2014 15:19:01 GMT]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich habe morgen eine Prüfung in Objektorientierter Programmierung, und habe leider noch ein paar Übungsaufgaben, welche ich nicht lösen kann...</p>
<p>Hier die erste Aufgabe:</p>
<p>Welche Aussage erzeugt folgendes Programm?<br />
Kennzeichne bei welchen Aufrufen von methode() dynamisch gebunden wird.</p>
<pre><code>class c1
{ public:
virtual void methode()
{ cout &lt;&lt; &quot;methode von c1 wird aufgerufen&quot; &lt;&lt; endl;
};
};

class c2: public c1
{public:
virtual void methode()
{ cout &lt;&lt; &quot;methode von c2 wird aufgerufen&quot; &lt;&lt; endl;
};
};

class c3: public c1
{ public:
virtual void methode()
{ cout &lt;&lt; &quot;methode von c3 wird aufgerufen&quot; &lt;&lt; endl;
};
};

int main()
{
c1 o_c1;
c2 o_c2;
c3 o_c3;
c1*o_p1 = &amp;o_c1;

o_c1.methode();
o_c2.methode();
o_p1-&gt;methode();

o_p1 = &amp;o_c3;
o_p1-&gt;methode();
}
</code></pre>
<p>Meine Lösung wäre Folgende: Also dynamisch gebunden wird in Zeile 31 und 34.<br />
Da ich jedoch nicht weiß, ob beim dynamisch gebinden, die methode aufgerufen wird weiß ich auch nicht ob es dort Aufrufe geben wird.</p>
<p>Deswegen sage ich einfach mal auf Verdacht, dass dies ausgegeben wird:</p>
<p>methode von c1 wurde aufgerufen<br />
methode von c2 wurde aufgerufen<br />
methode von c1 wurde aufgerufen<br />
methode von c3 wurde aufgerufen</p>
<p>Ich bin jetzt davon ausgegangen, dass beim dynamisch binden auch ein Aufruf erzeug wird. Hoffe ihr könnt mir helfen, oder eines Besseres belehren!</p>
<p>Desweiteren wird noch gefragt, wie Objekte einer Klasse erzeugt werden können, wenn die Klasse ausschließlich private Konstruktoren besitzt.<br />
Hinweis: Denke an Methoden und Member-Funktionen, die ohne ein Objekt aufgerufen werden können.</p>
<p>Leider habe ich keine Ahnung, wie das geht! Wäre super, wenn ihr mir hier auch noch helfen könntet.</p>
<p>Danke im Voraus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410307</guid><dc:creator><![CDATA[Alibabara]]></dc:creator><pubDate>Thu, 24 Jul 2014 15:19:01 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Methoden und dynamisch Binden on Thu, 24 Jul 2014 15:36:08 GMT]]></title><description><![CDATA[<blockquote>
<p>Deswegen sage ich einfach mal auf Verdacht, dass dies ausgegeben wird:</p>
</blockquote>
<p>Ja, korrekt.</p>
<blockquote>
<p>Desweiteren wird noch gefragt, wie Objekte einer Klasse erzeugt werden können, wenn die Klasse ausschließlich private Konstruktoren besitzt.<br />
Hinweis: Denke an Methoden und Member-Funktionen, die ohne ein Objekt aufgerufen werden können.</p>
</blockquote>
<p>Die Rede ist von <a href="http://de.wikipedia.org/wiki/Fabrikmethode" rel="nofollow">Fabrikmethoden</a>.</p>
<pre><code>class A
{
    A(){}

public:

    static A create()
    {
        return {};
    }
};
</code></pre>
<p>Für die statische Memberfunktion <code>create</code> ist der private Konstruktor natürlich zugänglich.</p>
<p>Kopieren kann man das Objekt nach wie vor wie gewohnt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410309</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 24 Jul 2014 15:36:08 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Methoden und dynamisch Binden on Thu, 24 Jul 2014 16:45:40 GMT]]></title><description><![CDATA[<p>Super, vielen Dank!<br />
Hätte nicht gedacht, dass ich richtig liege <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Dann hoffe ich mal, dass die Prüfung morgen zu bestehen ist.. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>mfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410323</guid><dc:creator><![CDATA[Alibabara]]></dc:creator><pubDate>Thu, 24 Jul 2014 16:45:40 GMT</pubDate></item></channel></rss>