<?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[Kurze Frage zu Operatorüberladung]]></title><description><![CDATA[<p>Ich habe 2 Versionen gesehen, den + Operator zu überladen:</p>
<pre><code class="language-cpp">Klasse operator+(const int&amp;) const;
</code></pre>
<pre><code class="language-cpp">Klasse operator+(const Klasse&amp;, const int&amp;);
</code></pre>
<p>Sind beide Versionen gleichwertig oder gibt es da irgendwelche Unterschiede?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/238632/kurze-frage-zu-operatorüberladung</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 23:41:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/238632.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 13 Apr 2009 17:23:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kurze Frage zu Operatorüberladung on Mon, 13 Apr 2009 17:23:32 GMT]]></title><description><![CDATA[<p>Ich habe 2 Versionen gesehen, den + Operator zu überladen:</p>
<pre><code class="language-cpp">Klasse operator+(const int&amp;) const;
</code></pre>
<pre><code class="language-cpp">Klasse operator+(const Klasse&amp;, const int&amp;);
</code></pre>
<p>Sind beide Versionen gleichwertig oder gibt es da irgendwelche Unterschiede?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1695310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1695310</guid><dc:creator><![CDATA[opüb]]></dc:creator><pubDate>Mon, 13 Apr 2009 17:23:32 GMT</pubDate></item><item><title><![CDATA[Reply to Kurze Frage zu Operatorüberladung on Mon, 13 Apr 2009 17:48:18 GMT]]></title><description><![CDATA[<p>Es gibt Unterschiede:</p>
<p>Die erste Version ist der Klassen-eigene + Operator (d.h. Memberfunktion), die zweite Version ist ein (für diese Klasse) überladener globaler + Operator (d.h. freie Funktion).</p>
<p>Für binäre Operatoren wird die zweite Variante empfohlen, da du über eine weitere Überladung eine veränderte Reihenfolge der Parameter erlauben kannst, also Klasse+x sowie x+Klasse.</p>
<p>Die erste Version lässt dies nicht zu, hier muss immer ein Objekt der Klasse links stehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1695316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1695316</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Mon, 13 Apr 2009 17:48:18 GMT</pubDate></item><item><title><![CDATA[Reply to Kurze Frage zu Operatorüberladung on Mon, 13 Apr 2009 18:07:48 GMT]]></title><description><![CDATA[<p>Wie ist denn die &quot;normale&quot; vorgehensweise, wenn ich die Objekt meiner Klasse kompatibel mit anderen Objekten machen möchte?</p>
<p>Im Moment löse ich das so</p>
<pre><code class="language-cpp">class Klasse
{
   private:
    int a;

   public:
    Klasse operator+(const Klasse&amp;) const;
    template&lt;typename T&gt; Klasse operator+(const T&amp;) const;
    template&lt;typename T&gt; friend Klasse operator + (const T&amp;, const Klasse&amp;);
};

Klasse Klasse::operator+(const Klasse&amp;) const
{
   //...
}

template&lt;typename T&gt; Klasse Klasse::operator+(const T&amp;) const
{
   //...
}

template&lt;typename T&gt; Klasse operator + (const T&amp;, const Klasse&amp;)
{
   //....
}
</code></pre>
<p>Ist das (vom Prinzip her) der richtige Stil?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1695324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1695324</guid><dc:creator><![CDATA[opüb]]></dc:creator><pubDate>Mon, 13 Apr 2009 18:07:48 GMT</pubDate></item><item><title><![CDATA[Reply to Kurze Frage zu Operatorüberladung on Mon, 13 Apr 2009 18:18:47 GMT]]></title><description><![CDATA[<p>Meistens macht man es so:</p>
<pre><code class="language-cpp">class MyClass
{
  // ...
public:
  MyClass&amp; operator +=(MyClass const&amp; rhs);

  template&lt;typename ValueT&gt;
  MyClass&amp; operator +=(ValueT const&amp; val);

  // ...
};

MyClass&amp; MyClass::operator +=(MyClass const&amp; rhs)
{
  // ...
}

template&lt;typename ValueT&gt;
MyClass&amp; MyClass::operator +=(ValueT const&amp; val)
{
  // ...
}

MyClass operator +(MyClass const&amp; lhs, MyClass const&amp; rhs)
{
  MyClass copy(lhs);
  copy += rhs;
  return copy;
}

template&lt;typename ValueT&gt;
MyClass operator +(MyClass const&amp; lhs, ValueT const&amp; rhs)
{
  MyClass copy(lhs);
  copy += rhs;
  return copy;
}

// usw.
</code></pre>
<p>Also Zuweisungen in die Klasse rein, die Operatoren aus der Klasse raus und dann meistens über die Zuweisung realisieren.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1695327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1695327</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Mon, 13 Apr 2009 18:18:47 GMT</pubDate></item><item><title><![CDATA[Reply to Kurze Frage zu Operatorüberladung on Mon, 13 Apr 2009 20:59:02 GMT]]></title><description><![CDATA[<p>*hust*</p>
<p>Ich darf auf den enstprechenden Artikel zur Operatorüberladung im Magazin verweisen *fg*</p>
<p><a href="http://magazin.c-plusplus.net" rel="nofollow">http://magazin.c-plusplus.net</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1695409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1695409</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 13 Apr 2009 20:59:02 GMT</pubDate></item><item><title><![CDATA[Reply to Kurze Frage zu Operatorüberladung on Mon, 13 Apr 2009 21:14:32 GMT]]></title><description><![CDATA[<p>Fein gemacht Pumukl, aber das *hust war nicht angebracht, zurück ins Körbchen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1695416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1695416</guid><dc:creator><![CDATA[Meister Eder]]></dc:creator><pubDate>Mon, 13 Apr 2009 21:14:32 GMT</pubDate></item><item><title><![CDATA[Reply to Kurze Frage zu Operatorüberladung on Mon, 13 Apr 2009 21:32:43 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>*hust*</p>
<p>Ich darf auf den enstprechenden Artikel zur Operatorüberladung im Magazin verweisen *fg*</p>
<p><a href="http://magazin.c-plusplus.net" rel="nofollow">http://magazin.c-plusplus.net</a></p>
</blockquote>
<p>Hmmm, stimmt, da hat ja so ein seltsamer Typ vor kurzem einen ziemlich guten Artikel geschrieben. Ganz vergessen <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>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1695422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1695422</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Mon, 13 Apr 2009 21:32:43 GMT</pubDate></item></channel></rss>