<?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[Der Befehl &amp;quot;Operator&amp;quot;: Anfänger braucht Hilfe]]></title><description><![CDATA[<p>Hallo</p>
<p>Leider habe ich noch einige Verständnisprobleme in bezug auf</p>
<pre><code class="language-cpp">operator
</code></pre>
<p>z.b weiß ich nicht den wirklichen unterschied bei den folgenden 3 beispielen</p>
<pre><code class="language-cpp">rational rational::operator -() {
	rational::zaehler = -rational::zaehler;
	return *this;
}
</code></pre>
<pre><code class="language-cpp">rational rational::operator -=(rational r)
{
	r = -r;
	return *this += r;
}
</code></pre>
<pre><code class="language-cpp">rational operator-(rational r1, rational r2) {
	rational result = r1;
	return result -= r2;
}
</code></pre>
<p>Kann mir jemand diesen Unterschied erklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/183448/der-befehl-quot-operator-quot-anfänger-braucht-hilfe</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 05:42:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/183448.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 05 Jun 2007 07:12:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Der Befehl &amp;quot;Operator&amp;quot;: Anfänger braucht Hilfe on Tue, 05 Jun 2007 07:12:40 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Leider habe ich noch einige Verständnisprobleme in bezug auf</p>
<pre><code class="language-cpp">operator
</code></pre>
<p>z.b weiß ich nicht den wirklichen unterschied bei den folgenden 3 beispielen</p>
<pre><code class="language-cpp">rational rational::operator -() {
	rational::zaehler = -rational::zaehler;
	return *this;
}
</code></pre>
<pre><code class="language-cpp">rational rational::operator -=(rational r)
{
	r = -r;
	return *this += r;
}
</code></pre>
<pre><code class="language-cpp">rational operator-(rational r1, rational r2) {
	rational result = r1;
	return result -= r2;
}
</code></pre>
<p>Kann mir jemand diesen Unterschied erklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1299022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299022</guid><dc:creator><![CDATA[Jaepen]]></dc:creator><pubDate>Tue, 05 Jun 2007 07:12:40 GMT</pubDate></item><item><title><![CDATA[Reply to Der Befehl &amp;quot;Operator&amp;quot;: Anfänger braucht Hilfe on Tue, 05 Jun 2007 07:17:32 GMT]]></title><description><![CDATA[<p>Das sind ind dieser Reihenfolge Negation (x = -r;), zusammengesetzte Zuweisung (r-=r2;) und Subtraktion (x=r1-r2;), wobei der zweite falsch implementiert ist.</p>
<p>(und ich würde die Parameter als &quot;const rational&amp;&quot; übergeben)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1299028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299028</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 05 Jun 2007 07:17:32 GMT</pubDate></item><item><title><![CDATA[Reply to Der Befehl &amp;quot;Operator&amp;quot;: Anfänger braucht Hilfe on Tue, 05 Jun 2007 07:47:02 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Das sind ind dieser Reihenfolge Negation (x = -r;), zusammengesetzte Zuweisung (r-=r2;) und Subtraktion (x=r1-r2;), wobei der zweite falsch implementiert ist.</p>
<p>(und ich würde die Parameter als übergeben)</p>
</blockquote>
<p>ah, das is die negation...<br />
das 2. ist dann das eigentliche überladen, und das dritte eine berechnung mit dem überladenen operator???</p>
<p>warum mit &quot;const rational&amp;&quot;???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1299045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299045</guid><dc:creator><![CDATA[jaepen]]></dc:creator><pubDate>Tue, 05 Jun 2007 07:47:02 GMT</pubDate></item><item><title><![CDATA[Reply to Der Befehl &amp;quot;Operator&amp;quot;: Anfänger braucht Hilfe on Tue, 05 Jun 2007 07:50:39 GMT]]></title><description><![CDATA[<p>jaepen schrieb:</p>
<blockquote>
<p>...warum mit &quot;const rational&amp;&quot;???</p>
</blockquote>
<p>Um sich das Kopieren zu sparen.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1299048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299048</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 05 Jun 2007 07:50:39 GMT</pubDate></item><item><title><![CDATA[Reply to Der Befehl &amp;quot;Operator&amp;quot;: Anfänger braucht Hilfe on Tue, 05 Jun 2007 12:29:17 GMT]]></title><description><![CDATA[<p>jaepen schrieb:</p>
<blockquote>
<p>CStoll schrieb:</p>
<blockquote>
<p>Das sind ind dieser Reihenfolge Negation (x = -r;), zusammengesetzte Zuweisung (r-=r2;) und Subtraktion (x=r1-r2;), wobei der zweite falsch implementiert ist.</p>
<p>(und ich würde die Parameter als übergeben)</p>
</blockquote>
<p>ah, das is die negation...<br />
das 2. ist dann das eigentliche überladen, und das dritte eine berechnung mit dem überladenen operator???</p>
</blockquote>
<p>Das sind alles dreies überladene Operatoren <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="😉"
    /> Nur der dritte nutzt den zweiten intern für seine Berechnungen. (das ist das übliche Vorgehen, um sicherzustellen, daß -= und - miteinander konform gehen).</p>
<p>Aber wie gesagt, dein op-= ist (semantisch) falsch implementiert - die übliche Bedeutung von &quot;x-=y;&quot; ist &quot;ziehe y von x ab und gib dessen neuen Wert zurück&quot; und nicht &quot;negiere y und gib das unveränderte x zurück&quot; (btw, durch die Übergabe per Wert negierst du nicht einmal y, sondern eine lokale Kopie davon).</p>
<blockquote>
<p>warum mit &quot;const rational&amp;&quot;???</p>
</blockquote>
<p>Wie Simonschon sagte, du mußt nichts kopieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1299253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299253</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 05 Jun 2007 12:29:17 GMT</pubDate></item><item><title><![CDATA[Reply to Der Befehl &amp;quot;Operator&amp;quot;: Anfänger braucht Hilfe on Tue, 05 Jun 2007 13:37:10 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Aber wie gesagt, dein op-= ist (semantisch) falsch implementiert - die übliche Bedeutung von &quot;x-=y;&quot; ist &quot;ziehe y von x ab und gib dessen neuen Wert zurück&quot; und nicht &quot;negiere y und gib das unveränderte x zurück&quot; (btw, durch die Übergabe per Wert negierst du nicht einmal y, sondern eine lokale Kopie davon).</p>
</blockquote>
<p>wieso unverändertes x? da steht doch *this += y nach der negation...<br />
Letzlich ist es eine sehr eigenwillige Implementation, aber auch sehr interessant <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/1299326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299326</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 05 Jun 2007 13:37:10 GMT</pubDate></item></channel></rss>