<?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[Frage zu operator+]]></title><description><![CDATA[<p>Hallo,</p>
<p>im Artikel &quot;Operatorüberladungen&quot; (<a href="http://www.c-plusplus.net/forum/232010-full" rel="nofollow">http://www.c-plusplus.net/forum/232010-full</a>) heißt es:</p>
<blockquote>
<p>Um eine implizite Typumwandlung des ersten Operanden zu ermöglichen werden die binären arithmetischen Operatoren üblicherweise als freie Funktionen definiert.</p>
</blockquote>
<p>Warum ist das so? Ist es nicht egal, ob ich das als Methode oder als freie Funktion definiere/deklariere?<br />
Bei operator+= steht davon nämlich nichts. Diese wird als Methode implementiert <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=":confused:"
      alt="😕"
    /></p>
<p>Eine kleine Erläuterung wäre nett <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/topic/308243/frage-zu-operator</link><generator>RSS for Node</generator><lastBuildDate>Wed, 05 Aug 2026 23:24:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/308243.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 19 Sep 2012 07:33:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu operator+ on Wed, 19 Sep 2012 07:33:53 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>im Artikel &quot;Operatorüberladungen&quot; (<a href="http://www.c-plusplus.net/forum/232010-full" rel="nofollow">http://www.c-plusplus.net/forum/232010-full</a>) heißt es:</p>
<blockquote>
<p>Um eine implizite Typumwandlung des ersten Operanden zu ermöglichen werden die binären arithmetischen Operatoren üblicherweise als freie Funktionen definiert.</p>
</blockquote>
<p>Warum ist das so? Ist es nicht egal, ob ich das als Methode oder als freie Funktion definiere/deklariere?<br />
Bei operator+= steht davon nämlich nichts. Diese wird als Methode implementiert <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=":confused:"
      alt="😕"
    /></p>
<p>Eine kleine Erläuterung wäre nett <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/2252541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252541</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Wed, 19 Sep 2012 07:33:53 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu operator+ on Wed, 19 Sep 2012 07:36:18 GMT]]></title><description><![CDATA[<p>theliquidwave schrieb:</p>
<blockquote>
<p>Warum ist das so?</p>
</blockquote>
<p>theliquidwave schrieb:</p>
<blockquote>
<p>Um eine implizite Typumwandlung des ersten Operanden zu ermöglichen</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2252542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252542</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 19 Sep 2012 07:36:18 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu operator+ on Wed, 19 Sep 2012 07:50:27 GMT]]></title><description><![CDATA[<p>Danke, das weiß ich auch.<br />
Was ist damit gemeint?</p>
<p>Beispiel. Meine Klasse bietet folgenden Konstruktor an:</p>
<pre><code class="language-cpp">A(int x);
</code></pre>
<p>Und folgenden operator+:</p>
<pre><code class="language-cpp">const A operator+(const A &amp;left, const A &amp;right);
</code></pre>
<p>Geht dann das hier?:</p>
<pre><code class="language-cpp">A a;
B b = 2 + a;
</code></pre>
<p>Oder was ist damit gemeint?<br />
Sorry, habe keinen Compiler zum testen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2252546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252546</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Wed, 19 Sep 2012 07:50:27 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu operator+ on Wed, 19 Sep 2012 07:55:38 GMT]]></title><description><![CDATA[<p>Beispiel: man nehme eine Klasse &quot;MeineZahl&quot;. Die einen nicht-expliziten Konstruktor hat, der ints entgegen nimmt (d.h. ein int ist implizit in ein &quot;MeineZahl&quot; konvertierbar). Spendiere dieser Klasse einen (member-) operator+ und einen operator+=</p>
<pre><code class="language-cpp">MeineZahl m, m2, m3;
int i;
m = 5; //ok -&gt; m = MeineZahl(5)
m = m2 + m3; //ok -&gt; m = m2.operator+(m3)
m = m2 + 5;  //ok -&gt; m = m2.operator+(MeineZahl(5))
m = 5 + m3;  //FEHLER: ein op+, der ein int und ein MeineZahl nimmt gibts nicht
m += m2; //ok -&gt; m.operator+=(m2)
m += 7; //ok -&gt; m.operator+=(MeineZahl(7))
i += m; //ist was völlig anderes -&gt; m ist nicht in int konvertierbar
</code></pre>
<p>Bei einem freien op+ siehts so aus:</p>
<pre><code class="language-cpp">MeineZahl m, m2, m3;
int i;
m = 5; //ok -&gt; m = MeineZahl(5)
m = m2 + m3; //ok -&gt; m = operator+(m2, m3)
m = m2 + 5;  //ok -&gt; m = operator+(m2, MeineZahl(5))
m = 5 + m3;  //ok -&gt; m = operator+(MeineZahl(5), m3)
m += m2; //ok -&gt; m.operator+=(m2)
m += 7; //ok -&gt; m.operator+=(MeineZahl(7))
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2252550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252550</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 19 Sep 2012 07:55:38 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu operator+ on Wed, 19 Sep 2012 07:56:23 GMT]]></title><description><![CDATA[<p>theliquidwave schrieb:</p>
<blockquote>
<p>Sorry, habe keinen Compiler zum testen...</p>
</blockquote>
<p><a href="http://ideone.com" rel="nofollow">http://ideone.com</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2252551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252551</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 19 Sep 2012 07:56:23 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu operator+ on Wed, 19 Sep 2012 08:02:42 GMT]]></title><description><![CDATA[<p>theliquidwave schrieb:</p>
<blockquote>
<p>Beispiel. Meine Klasse bietet folgenden Konstruktor an:</p>
<pre><code class="language-cpp">A(int x);
</code></pre>
</blockquote>
<p>Damit kann automatisch ein zu <code>int</code> kompatibler Wert in ein <code>A</code> konvertiert werden.</p>
<p>Ist ein Operator als Memberfunktion überladen, so musst natürlich der linke Operand des Operators eine Instanz der Klasse sein. Beispiel, wenn <code>operator+</code> eine Memberfunktion ist:</p>
<pre><code class="language-cpp">A a;
A b;
a+b; // Gleichbedeutend mit a.operator+(b); ... funktioniert wunderbar.
2+b; // Ähh wie bitte? 2.operator+(b); ... das geht doch nicht!
</code></pre>
<p>Beispiel, wenn <code>operator+</code> eine freie Funktion ist:</p>
<pre><code class="language-cpp">A a;
A b;
a+b; // Gleichbedeutend mit operator+(a,b); ... funktioniert wunderbar.
2+b; // Gleichbedeutend mit operator+(2,b); ... funktioniert wunderbar.
</code></pre>
<p>Da du ja, wie oben erwähnt, eine automatische Konvertierung zu <code>A</code> ermöglichst, funktioniert <code>2+b</code> , da 2 in ein <code>A</code> konvertiert werden kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2252556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252556</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Wed, 19 Sep 2012 08:02:42 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu operator+ on Wed, 19 Sep 2012 08:18:51 GMT]]></title><description><![CDATA[<p>Vielen Dank an alle!</p>
<p>pumuckl schrieb:</p>
<blockquote>
<p><a href="http://ideone.com" rel="nofollow">http://ideone.com</a></p>
</blockquote>
<p>Nice.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2252558</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252558</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Wed, 19 Sep 2012 08:18:51 GMT</pubDate></item></channel></rss>