<?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[Operator Überladung]]></title><description><![CDATA[<p>Hallo,</p>
<p>Die Zuweisungsoperatoren =, +=,-=,*= etc. soll man nur als<br />
Elementfunktion nicht aber als friend Funktion also extern<br />
deklarieren.</p>
<p>Warum ist das so ?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/252376/operator-überladung</link><generator>RSS for Node</generator><lastBuildDate>Mon, 14 Sep 2026 12:33:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/252376.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 18 Oct 2009 22:49:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Operator Überladung on Sun, 18 Oct 2009 22:49:38 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Die Zuweisungsoperatoren =, +=,-=,*= etc. soll man nur als<br />
Elementfunktion nicht aber als friend Funktion also extern<br />
deklarieren.</p>
<p>Warum ist das so ?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794543</guid><dc:creator><![CDATA[blurry33]]></dc:creator><pubDate>Sun, 18 Oct 2009 22:49:38 GMT</pubDate></item><item><title><![CDATA[Reply to Operator Überladung on Sun, 18 Oct 2009 23:35:16 GMT]]></title><description><![CDATA[<p>Im Falle des normalen Zuweisungsoperators ist das durch die Sprache so vorgeschrieben, damit spätestens am Ende der Klassendefinition feststeht, ob der Compiler diesen Operator selbst deklarieren muss. Bei den anderen Operatoren, die nur als nicht-statische Member überladen werden können ([] () -&gt;), gibt es dagegen keinen technischen Grund für diese Einschränkung, und diese ist dort nur historisch bedingt.<br />
Für die anderen Zuweisungsoperatoren gibt es diesbezüglich keine Einschränkungen, so dass hier die allgemeinen Regeln gelten, denen du dich bei Wahl zwischen Member- und freien Funktionen unterwerfen willst. Dazu gibt es verschiedene legitime Denkansätze.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794559</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794559</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 18 Oct 2009 23:35:16 GMT</pubDate></item><item><title><![CDATA[Reply to Operator Überladung on Mon, 19 Oct 2009 18:42:38 GMT]]></title><description><![CDATA[<p>Eine übliche Verwendung der arithmetischen Zuweisungsoperatoren ist die folgende:</p>
<pre><code class="language-cpp">// += als Memberfunktion
MyClass&amp; MyClass::operator+= (const MyClass&amp; Other)
{
    // hier Membervariablen in-place verändern
    return *this;
}

// + als freie Funktion, die += verwendet. Somit schöne Kapselung.
MyClass operator+ (const MyClass&amp; Left, const MyClass&amp; Right)
{
    MyClass Temp(Left);
    Temp += Right;
    return Temp;
}
</code></pre>
<p>Nur so nebenbei: Hinsichtlich Compiler-Optimierungen kann es von Vorteil sein, die Kopie beim der Argumentübergabe durchzuführen. Allerdings ist dann die Schnittstelle nicht mehr ganz einheitlich und verrät unnötigerweise ein Implementierungsdetail.</p>
<pre><code class="language-cpp">MyClass operator+ (MyClass Left, const MyClass&amp; Right)
{
    Left += Right;
    return Left;
}
</code></pre>
<p>Über die Operatorüberladung in C++ gibt es in unserem Magazin einen <a href="http://magazin.c-plusplus.net/artikel/%DCberladung%20von%20Operatoren%20in%20CPlusPlus%20%28Teil%201%29" rel="nofollow">Artikel</a>. Ich rate dir, diesen genau zu studieren, neben der grundlegenden Verwendung werden auch viele weiterführende Tipps gegeben (erst recht in Teil 2 und 3).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794982</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794982</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 19 Oct 2009 18:42:38 GMT</pubDate></item><item><title><![CDATA[Reply to Operator Überladung on Mon, 19 Oct 2009 18:16:38 GMT]]></title><description><![CDATA[<p>Nexus, da hat sich ein Copy&amp;Paste-Fehler in dein zweites Beispiel geschlichen, das solltest du korrigieren um die Leute nicht zu verwirren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794985</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794985</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 19 Oct 2009 18:16:38 GMT</pubDate></item><item><title><![CDATA[Reply to Operator Überladung on Mon, 19 Oct 2009 18:43:19 GMT]]></title><description><![CDATA[<p>Vielen Dank für den Hinweis, ich habs geändert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1795004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1795004</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 19 Oct 2009 18:43:19 GMT</pubDate></item></channel></rss>