<?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[Polymorphismus]]></title><description><![CDATA[<p>hi,</p>
<p>wie kann man static (compile-time) und dynamic (run-time) polymorphisms erklären?</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/254296/polymorphismus</link><generator>RSS for Node</generator><lastBuildDate>Sun, 13 Sep 2026 01:02:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/254296.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 14 Nov 2009 14:28:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Polymorphismus on Sat, 14 Nov 2009 14:28:32 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>wie kann man static (compile-time) und dynamic (run-time) polymorphisms erklären?</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1807916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1807916</guid><dc:creator><![CDATA[jayz]]></dc:creator><pubDate>Sat, 14 Nov 2009 14:28:32 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphismus on Sat, 14 Nov 2009 14:46:14 GMT]]></title><description><![CDATA[<p>Entsprechende Kapitel in Büchern bzw. Tutorials und Wikipediaartikel durchlesen, verstehen und dann in eigene Worte fassen. So geht's! <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/1807928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1807928</guid><dc:creator><![CDATA[Hmpf]]></dc:creator><pubDate>Sat, 14 Nov 2009 14:46:14 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphismus on Sat, 14 Nov 2009 16:24:15 GMT]]></title><description><![CDATA[<p>hm, aber ich kann nicht so gut formulieren;/</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1807973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1807973</guid><dc:creator><![CDATA[jayz]]></dc:creator><pubDate>Sat, 14 Nov 2009 16:24:15 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphismus on Sat, 14 Nov 2009 16:26:06 GMT]]></title><description><![CDATA[<p>und jz erwartest du von uns, dass wir hier polymorphismus komplett beschreiben?</p>
<p>troll!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1807974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1807974</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sat, 14 Nov 2009 16:26:06 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphismus on Sat, 14 Nov 2009 16:29:12 GMT]]></title><description><![CDATA[<p>Das hat ja grundsätzlich nicht nur was mit C++ zu tun, aber da du hier postest, denke ich willst du darauf hinaus das in C++ zu erklären. Wenn du dir mal die Unterschiede, Vor/Nachteile von templates und virtuellen Funktionen überlegst, dann siehst du eigentlich, wo die grossen Unterschiede sind und dann sollte das recht leicht zu eklären sein.</p>
<p>Du kannst dir Fragen überlegen, wie</p>
<ul>
<li>Wann findet die Auswahl statt, welche Funktion aufgerufen wird</li>
<li>Performance Einbussen</li>
<li>Erweiterbarkeit für Benutzer</li>
<li>Abhängigkeiten (durch Vererbung z.B)</li>
<li>...</li>
</ul>
<p>Wenn du dir Gedanken über diese Punkte (und vielleicht noch andere) machst, dann wirst du das jedem recht gut erkären können. Das setzt natürlich voraus, dass du dich mit den beiden Techniken auskennst. Wenn nicht, dann musst du zuerst mal die Antworten auf die obigen Fragen finden, was du durch gute Bücher tun kannst.</p>
<blockquote>
<p>und jz erwartest du von uns, dass wir hier polymorphismus komplett beschreiben?</p>
</blockquote>
<p>Ich habe die Frage nicht so verstanden. <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/1807976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1807976</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 14 Nov 2009 16:29:12 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphismus on Sat, 14 Nov 2009 17:46:29 GMT]]></title><description><![CDATA[<p>also das hab ich bisher verstanden:</p>
<blockquote>
<p>also unter statische poloymorphie verstehe ich folgendes:<br />
- das überladen von funktionen, man hat also mehrere funktionsnahmen mit unterschiedlichen parametern,<br />
wenn man nun im code eine funktion aufruft, weißt der compiler zur compilzeit welche funktion aufgerufen wird<br />
- templates haben auch eine art statische polymorphie...aber wie genau?</p>
<p>dynamische polymorphie wird immer in bezug auf vererbung definiert:<br />
- wenn man in der basisklasse eine funktion: foo definiert, und das auch in der davon abgeleiteten child klasse,<br />
wird diese funktion also überschrieben. man wenn man einer funktion die ein basis klassen objekt als pointer haben<br />
will, die adresse des child objektes übergibt, wird immer die funktion foo der basisklasse aufgerufen wird.<br />
wenn man nun aber die funktion der basisklasse als virtual definiert, legt der compiler ein vtable an.<br />
der compiler weiß er kann zur compilezeit nicht auswerten welche funktion aufgerufen wird. es muss also zur<br />
laufzeit passieren. das übergebene objekt das sich hinter dem pointer befindet prüft also selbst welche funktion es aufrufen muss, entweder die funktion<br />
foo der basisklasse oder die funktion foo der child klasse. stimmt das so ca.?</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1808000</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1808000</guid><dc:creator><![CDATA[jayz]]></dc:creator><pubDate>Sat, 14 Nov 2009 17:46:29 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphismus on Sat, 14 Nov 2009 17:52:24 GMT]]></title><description><![CDATA[<p>Ja. Das kommt eigentlich hin.</p>
<p>templates generieren dir zur Laufzeit sogar die Funktion, die aufgerufen wird anhand des Typen, den du angibst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1808003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1808003</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 14 Nov 2009 17:52:24 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphismus on Sat, 14 Nov 2009 18:12:12 GMT]]></title><description><![CDATA[<blockquote>
<p>&gt; templates generieren dir zur Laufzeit sogar die Funktion, die aufgerufen wird anhand des Typen, den du angibst.</p>
</blockquote>
<p>Echt? Ich dachte, dass der Objektcode mit dem jeweilig eingesetzten Typen zur Kompilier-Zeit erstellt wird?! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1808007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1808007</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Sat, 14 Nov 2009 18:12:12 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphismus on Sat, 14 Nov 2009 18:17:09 GMT]]></title><description><![CDATA[<p>wie kann ich den zusammenhang zwischen templates und statischer polymorphie erklären? templates werden ja immer zur compilezeit definiert!?</p>
<p>das problem mit dynamischer polymorphie habe ich nun mit objekten beschrieben, wo ich die adresse für einen pointer der basisklasse übergebe. weil der compiler immer den typ des pointers nimmt (und nicht das objekt analysiert, welches sich hinter dem pointer befindet), um die funktion aufzurufen. Ist das so ok?</p>
<p>cu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1808009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1808009</guid><dc:creator><![CDATA[jayz]]></dc:creator><pubDate>Sat, 14 Nov 2009 18:17:09 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphismus on Sat, 14 Nov 2009 18:25:39 GMT]]></title><description><![CDATA[<p>Ad aCTa schrieb:</p>
<blockquote>
<blockquote>
<p>&gt; templates generieren dir zur Laufzeit sogar die Funktion, die aufgerufen wird anhand des Typen, den du angibst.</p>
</blockquote>
<p>Echt? Ich dachte, dass der Objektcode mit dem jeweilig eingesetzten Typen zur Kompilier-Zeit erstellt wird?! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
</blockquote>
<p>Hmpf. Natürlich meinte ich da zur Kompilierzeit und nicht zur Laufzeit.</p>
<blockquote>
<p>das problem mit dynamischer polymorphie habe ich nun mit objekten beschrieben, wo ich die adresse für einen pointer der basisklasse übergebe. weil der compiler immer den typ des pointers nimmt (und nicht das objekt analysiert, welches sich hinter dem pointer befindet), um die funktion aufzurufen. Ist das so ok?</p>
</blockquote>
<p>Der Compiler weiss bei dynamischer Polymorphie nicht von welchem Typ das Objekt sein wird, sondern der Typ wird dynamisch an den Zeiger gebunden. Der Compiler weiss lediglich, welche Typen an den Zeiger gebunden werden können. Der Tatsächliche Typ ist erst zur Laufzeit bekannt und kann auch erst dann ermittelt werden. Das geht ja noch weiter, dass von einer Zeile zur anderen der gebundene Typ sich ändern kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1808011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1808011</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 14 Nov 2009 18:25:39 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphismus on Sat, 14 Nov 2009 18:37:11 GMT]]></title><description><![CDATA[<blockquote>
<p>Das geht ja noch weiter, dass von einer Zeile zur anderen der gebundene Typ sich ändern kann.</p>
</blockquote>
<p>wie soll das denn gehn? hast ein bsp?</p>
<p>cu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1808013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1808013</guid><dc:creator><![CDATA[jayz]]></dc:creator><pubDate>Sat, 14 Nov 2009 18:37:11 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphismus on Sat, 14 Nov 2009 18:43:56 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void bar (base** b)
{
  *b = new A;
}

void foo ()
{
 base* b = new B; // gebundener Typ B
 bar ( b ); // hier auch noch
 b-&gt;foobar (); // hier bereits Typ A
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1808016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1808016</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 14 Nov 2009 18:43:56 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphismus on Sat, 14 Nov 2009 18:45:27 GMT]]></title><description><![CDATA[<p>jayz schrieb:</p>
<blockquote>
<p>wie soll das denn gehn? hast ein bsp?</p>
</blockquote>
<pre><code class="language-cpp">class Base {}; // sei Base polymorph
class Derived : public Base {};

int main()
{
    Base b;
    Derived d;

    Base* p = &amp;b;  // dynamischer Typ Base
    p = &amp;d;        // dynamischer Typ Derived
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1808017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1808017</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 14 Nov 2009 18:45:27 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphismus on Sat, 14 Nov 2009 19:49:18 GMT]]></title><description><![CDATA[<p>welche anwendungen hat dynamische polymorphie genau?</p>
<p>cu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1808031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1808031</guid><dc:creator><![CDATA[jayz]]></dc:creator><pubDate>Sat, 14 Nov 2009 19:49:18 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphismus on Sat, 14 Nov 2009 20:00:08 GMT]]></title><description><![CDATA[<p>jayz schrieb:</p>
<blockquote>
<p>welche anwendungen hat dynamische polymorphie genau?</p>
</blockquote>
<p>Sie ist ein wichtiges Konzept zur Abstraktion in der objektorientierten Programmierung. Durch virtuelle Funktionen kann man Zeiger/Referenzen auf Instanzen einer Basisklasse besitzen, hinter denen sich aber auch abgeleitete Klassen befinden können. In der Basisklasse existiert eine gemeinsame Schnittstelle für Aufgaben, welche in abgeleiteten Klassen spezialisiert werden. Auf diese Weise kann man unterschiedliche Objekte einheitlich ansprechen, und je nach Klassenzugehörigkeit wird eine andere, auf das jeweilige Objekt angepasste, Aufgabe durchgeführt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1808038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1808038</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 14 Nov 2009 20:00:08 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphismus on Sat, 14 Nov 2009 20:04:36 GMT]]></title><description><![CDATA[<p>wo findet man das, in gui frameworks?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1808042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1808042</guid><dc:creator><![CDATA[jayz]]></dc:creator><pubDate>Sat, 14 Nov 2009 20:04:36 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphismus on Sat, 14 Nov 2009 21:17:27 GMT]]></title><description><![CDATA[<p>jayz schrieb:</p>
<blockquote>
<p>wo findet man das, in gui frameworks?</p>
</blockquote>
<p>Unter anderem. Aber Laufzeitpolymorphie ist ein Sprachkonzept und als solches nahezu überall anwendbar. Ich verwende es selber recht oft -- eben dort, wo die erwähnte Abstraktion benötigt wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1808068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1808068</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 14 Nov 2009 21:17:27 GMT</pubDate></item></channel></rss>