<?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[Polymorphie mit Operatorenüberladung]]></title><description><![CDATA[<p>Also ich habe folgendes: meine abstrakte Basisklasse definiert sämtliche Operatoren, und die abgeleiteten Klassen übernehmen diese. Sämtliche Parameter, Rückgabetypen sind Zeiger. Eine typische Operatorenüberladung sieht zur zeit so aus:</p>
<pre><code class="language-cpp">MathObject* BaseXInteger::operator+(const MathObject* other) const
</code></pre>
<p>allerdings stört mich jetzt, dass der Anwender, wenn er reine Instanzen nimmt, keine Zeiger, sehr umständlich die operatoren nur benutzen kann, da ich eben Zeiger benutze</p>
<p>Jetzt frage ich mich, ob meine Idee mit den Zeigern gut war, oder ob ich es anders definieren sollte?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/245740/polymorphie-mit-operatorenüberladung</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 13:08:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/245740.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 17 Jul 2009 23:00:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Polymorphie mit Operatorenüberladung on Fri, 17 Jul 2009 23:00:54 GMT]]></title><description><![CDATA[<p>Also ich habe folgendes: meine abstrakte Basisklasse definiert sämtliche Operatoren, und die abgeleiteten Klassen übernehmen diese. Sämtliche Parameter, Rückgabetypen sind Zeiger. Eine typische Operatorenüberladung sieht zur zeit so aus:</p>
<pre><code class="language-cpp">MathObject* BaseXInteger::operator+(const MathObject* other) const
</code></pre>
<p>allerdings stört mich jetzt, dass der Anwender, wenn er reine Instanzen nimmt, keine Zeiger, sehr umständlich die operatoren nur benutzen kann, da ich eben Zeiger benutze</p>
<p>Jetzt frage ich mich, ob meine Idee mit den Zeigern gut war, oder ob ich es anders definieren sollte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1745113</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1745113</guid><dc:creator><![CDATA[uhsuhz]]></dc:creator><pubDate>Fri, 17 Jul 2009 23:00:54 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphie mit Operatorenüberladung on Fri, 17 Jul 2009 23:06:50 GMT]]></title><description><![CDATA[<p>so 100% verstanden hab ich es jetzt nicht, aber statt zeigern kannst du in c++ auch referenzen nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1745115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1745115</guid><dc:creator><![CDATA[player4245]]></dc:creator><pubDate>Fri, 17 Jul 2009 23:06:50 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphie mit Operatorenüberladung on Fri, 17 Jul 2009 23:21:16 GMT]]></title><description><![CDATA[<p>Schlecht.<br />
Will der User c=a+b schreiben, sollst du</p>
<pre><code class="language-cpp">MathObject operator+(const MathObject&amp; a,const MathObject&amp; a)
</code></pre>
<p>anbieten.</p>
<p>Wenn ihm das Kopieren zu langam ist, soll er deinen</p>
<pre><code class="language-cpp">MathObject&amp; BaseXInteger::operator+=(const MathObject&amp; b) const
</code></pre>
<p>bevorzugen.</p>
<p>Außerdem ist immer zu schauen, ob die RVO greift und man da gar nicht optimimieren muß.</p>
<p>Willst Du sowas machen, daß Number(1)*(Number(2)+Var(a)) zu Sum(Number(2)*Var(a)) wird, nimm besser keine Operatorüberladunf, sondern plus, minus und so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1745118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1745118</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 17 Jul 2009 23:21:16 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphie mit Operatorenüberladung on Sat, 18 Jul 2009 06:48:36 GMT]]></title><description><![CDATA[<p>uhsuhz schrieb:</p>
<blockquote>
<p>Eine typische Operatorenüberladung sieht zur zeit so aus:</p>
</blockquote>
<p>Das ist alles andere als üblich. Üblich ist es, Objekte zu übergeben, keine Zeiger. Ein Anwender muss sich also erstmal durch dein Doku wälzen bevor er die Operatoren überhauot benutzen kann.</p>
<blockquote>
<p>Jetzt frage ich mich, ob meine Idee mit den Zeigern gut war, oder ob ich es anders definieren sollte?</p>
</blockquote>
<p>Nein, die Idee war nicht gut, und ja, du solltest es anders definieren.<br />
Siehe auch <a href="http://magazin.c-plusplus.net/artikel/%DCberladung%20von%20Operatoren%20in%20CPlusPlus%20%28Teil%201%29" rel="nofollow">hier</a> für mehr Infos zu typischen Überladungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1745143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1745143</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 18 Jul 2009 06:48:36 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphie mit Operatorenüberladung on Sat, 18 Jul 2009 20:14:21 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>uhsuhz schrieb:</p>
<blockquote>
<p>Eine typische Operatorenüberladung sieht zur zeit so aus:</p>
</blockquote>
<p>Das ist alles andere als üblich. Üblich ist es, Objekte zu übergeben, keine Zeiger. Ein Anwender muss sich also erstmal durch dein Doku wälzen bevor er die Operatoren überhauot benutzen kann.</p>
</blockquote>
<p>-&gt; Damit meinte ich in meiner klasse, und nicht generell alle operatoren überladungen sämtlicher coder <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>Eigentlich hatte ich vor mit referenzen zu arbeiten, doch dann gibt mir der compiler ne fehlermeldung aus, dass MathObject nicht instanziert werden kann weil sie abstrakt ist... Das ist auch der Grund weshalb ich überhaupt Zeiger benutzt habe.</p>
<p>Ich glaube ich werde keine operatoren überladen, sondern dann Funktionen schreiben und überladen, da später sämtliche Objekte als Zeiger auf die Basisklasse deklariert werden und dann mit dem abgeleiteten Typ initialisiert werden, so dass ich die späte bindung ausnutzen kann, um nicht immer wissen zu müssen um welchen Typ es sich gerade handelt. Ich hoffe das war jetzt klar <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/1745503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1745503</guid><dc:creator><![CDATA[uhsuhz]]></dc:creator><pubDate>Sat, 18 Jul 2009 20:14:21 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphie mit Operatorenüberladung on Sat, 18 Jul 2009 20:19:55 GMT]]></title><description><![CDATA[<p>uhsuhz schrieb:</p>
<blockquote>
<p>Eigentlich hatte ich vor mit referenzen zu arbeiten, doch dann gibt mir der compiler ne fehlermeldung aus, dass MathObject nicht instanziert werden kann weil sie abstrakt ist... Das ist auch der Grund weshalb ich überhaupt Zeiger benutzt habe.</p>
</blockquote>
<p>Dann hast du sie eben falsch angewandt. Instanziiert werden muss mit Referenzen genauso wenig wie mit Zeigern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1745506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1745506</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 18 Jul 2009 20:19:55 GMT</pubDate></item></channel></rss>