<?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[ich begreif operatorüberaldung nicht,kanns jmd gut erklären?]]></title><description><![CDATA[<p>wie der titel schon sagt, hab ich damit probleme!</p>
<p>zB wann in klasse, wann ausserhalb?<br />
wann welcher rückgabetyp?<br />
wann und warum mal einer od 2 parameter?(besonders bei operator+)<br />
wann referenz zurück, wann neues objekt?</p>
<p>kann mir das jemand vielleicht an beispielen mal genau erklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/137998/ich-begreif-operatorüberaldung-nicht-kanns-jmd-gut-erklären</link><generator>RSS for Node</generator><lastBuildDate>Sun, 30 Aug 2026 00:44:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/137998.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 22 Feb 2006 15:06:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ich begreif operatorüberaldung nicht,kanns jmd gut erklären? on Wed, 22 Feb 2006 15:06:57 GMT]]></title><description><![CDATA[<p>wie der titel schon sagt, hab ich damit probleme!</p>
<p>zB wann in klasse, wann ausserhalb?<br />
wann welcher rückgabetyp?<br />
wann und warum mal einer od 2 parameter?(besonders bei operator+)<br />
wann referenz zurück, wann neues objekt?</p>
<p>kann mir das jemand vielleicht an beispielen mal genau erklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1000276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1000276</guid><dc:creator><![CDATA[=(!]]></dc:creator><pubDate>Wed, 22 Feb 2006 15:06:57 GMT</pubDate></item><item><title><![CDATA[Reply to ich begreif operatorüberaldung nicht,kanns jmd gut erklären? on Wed, 22 Feb 2006 15:35:59 GMT]]></title><description><![CDATA[<p>=(! schrieb:</p>
<blockquote>
<p>zB wann in klasse, wann ausserhalb?</p>
</blockquote>
<p>Normalerweise in Klasse, außer du kannst nicht.</p>
<p>Ausnahmefälle sind:<br />
a) du willst implizite Umwandlung für den linken Operand:</p>
<pre><code class="language-cpp">bigInt bi(4711),bj;
bj = bi + bi; // klappt
bj = bi + 15; // klappt
bj = 15 + bi; // funktioniert NUR mit globalem operator+
</code></pre>
<p>b) du kannst die Klassendefinition des linken Parameters nicht ändern (betrifft vor allem die Stream-Operatoren &lt;&lt; und &gt;&gt;)</p>
<blockquote>
<p>wann welcher rückgabetyp?</p>
</blockquote>
<p>Theoretisch ist alles möglich. Praktisch solltest du eine Referenz zurückgeben, wenn du deinen eigenen Status geändert hast (=, +=, Prä-Inkrement) und einen Wert, wenn du ein temporäres Objekt erzeugt und darauf gerechnet hast (+, Post-Inkrement)</p>
<blockquote>
<p>wann und warum mal einer od 2 parameter?(besonders bei operator+)</p>
</blockquote>
<p>Operatoren als Memberfunktion bekommen einen (binärer Operator) oder gar keinen Parameter (unärer Operator) - dort wird als linker bzw. einziger Operand *this verwendet. Operatoren als globale Funktion bekommen zwei bzw. einen Parameter.<br />
(und + hat eine Doppelbedeutung - die gibt's sowohl in unärer Form (Vorzeichen) als auch in binärer Form (Addition))</p>
<blockquote>
<p>wann referenz zurück, wann neues objekt?</p>
</blockquote>
<p>Siehe oben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1000314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1000314</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 22 Feb 2006 15:35:59 GMT</pubDate></item><item><title><![CDATA[Reply to ich begreif operatorüberaldung nicht,kanns jmd gut erklären? on Wed, 22 Feb 2006 17:54:16 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>=(! schrieb:</p>
<blockquote>
<p>zB wann in klasse, wann ausserhalb?</p>
</blockquote>
<p>Normalerweise in Klasse, außer du kannst nicht.</p>
</blockquote>
<p>eher umgekehrt (dazu auch(<a href="http://www.gotw.ca/gotw/084.htm" rel="nofollow">http://www.gotw.ca/gotw/084.htm</a>). memberfunktionen dann, wenn es sein muss:<br />
- construktoren/Destruktor,operator=,operator[]<br />
- virtuelle funktionen<br />
- wenn zugriffskontrolle(private/protected) benötigt wird<br />
alles andere ist verhandelbar - wichtig ist konsistenz und hier haben freie funktionen den grossen vorteil, dass man das interface einer klasse erweitern kann, ohne diese klasse selbst zu verändern; bei den binären operatoren kommen symmetrieüberlegungen hinzu (das problem der implizen konvertierung auf dem linken operanden ist nur ein aspekt davon). sofern mutierende operationen zum verketten geeignet seinsollen, müssen sie memberfunktionen sein - das ist ein nachteil der (noch) rvalue-referenzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1000476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1000476</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 22 Feb 2006 17:54:16 GMT</pubDate></item><item><title><![CDATA[Reply to ich begreif operatorüberaldung nicht,kanns jmd gut erklären? on Wed, 22 Feb 2006 18:03:29 GMT]]></title><description><![CDATA[<p><a href="http://turing.fh-landshut.de/~jamann/Sinnvolle%20Implementierung%20von%20Operatoren%20in%20C.pdf" rel="nofollow">http://turing.fh-landshut.de/~jamann/Sinnvolle Implementierung von Operatoren in C.pdf</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1000485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1000485</guid><dc:creator><![CDATA[Vertexwahn]]></dc:creator><pubDate>Wed, 22 Feb 2006 18:03:29 GMT</pubDate></item><item><title><![CDATA[Reply to ich begreif operatorüberaldung nicht,kanns jmd gut erklären? on Wed, 22 Feb 2006 22:51:54 GMT]]></title><description><![CDATA[<p>=(! schrieb:</p>
<blockquote>
<p>zB wann in klasse, wann ausserhalb?</p>
</blockquote>
<p>Grundsätzlich kannst du dir merken, alle binären Non-Assignment Operatoren ausserhalb, der Rest innerhalb.</p>
<p>=(! schrieb:</p>
<blockquote>
<p>wann welcher rückgabetyp?</p>
</blockquote>
<p>Das ist von Operator zu Operator unterschiedlich. Logische Operatoren geben logischerweise bool zurück. Logisch, oder? Assignment Operatoren das eigene Objekt (*this), also Rückgabetyp ist eine Referenz auf die eigene Klasse. Binäre Verknüpfungsoperatoren ein Objekt der eigenen Klasse, diesmal aber by-value da temporär und wenn möglich const (falls man vorhat, die Funktionsweise von primitiven Typen zu implementieren). Grundsätzlich kann man aber keine generellen Aussagen treffen, da du gewisse Freiheiten hast und diese natürlich auch nutzen kannst. Wähle den Rückgabetyp einfach so, dass er der Situation am besten entspricht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1000726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1000726</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Wed, 22 Feb 2006 22:51:54 GMT</pubDate></item><item><title><![CDATA[Reply to ich begreif operatorüberaldung nicht,kanns jmd gut erklären? on Thu, 23 Feb 2006 07:09:59 GMT]]></title><description><![CDATA[<p>also anscheinend ist gerade die operatorüberladung auch ein nicht ganz einfaches thema oder?<br />
Jetzt ein ja würde mir helfen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title="=/"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1000786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1000786</guid><dc:creator><![CDATA[=(!]]></dc:creator><pubDate>Thu, 23 Feb 2006 07:09:59 GMT</pubDate></item><item><title><![CDATA[Reply to ich begreif operatorüberaldung nicht,kanns jmd gut erklären? on Thu, 23 Feb 2006 08:24:39 GMT]]></title><description><![CDATA[<p>Nene, das ist das trivial.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1000819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1000819</guid><dc:creator><![CDATA[scnr]]></dc:creator><pubDate>Thu, 23 Feb 2006 08:24:39 GMT</pubDate></item><item><title><![CDATA[Reply to ich begreif operatorüberaldung nicht,kanns jmd gut erklären? on Thu, 23 Feb 2006 08:33:05 GMT]]></title><description><![CDATA[<p>Einen Operator zu schreiben ist recht einfach, wenn man ein paar Feinheiten beachtet (Member/Global, Paramteranzahl,...) - schwierig wird es erst, wenn du den Operator &quot;richtig&quot; schreiben willst (dabei solltest du dich dann an der vordefinierten Bedeutung der Operatoren für eingebaute Typen orientieren - &quot;do it as the int's&quot;).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1000826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1000826</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Thu, 23 Feb 2006 08:33:05 GMT</pubDate></item></channel></rss>