<?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 als Member oder...]]></title><description><![CDATA[<p>...global? Ich hab mal irgendwo gelesen das manche Operatoren global zu implementieren sind statt als Membermethode. Weiß jemand um welche Operatoren es sich da konkret handelt. Ich vermute das alle Operatoren die über eine konstante Methode implementiert werden würden global gemacht werden sollten, bin mir aber nicht sicher! <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>Danke schonmal im Voraus! <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/178300/operator-als-member-oder</link><generator>RSS for Node</generator><lastBuildDate>Sun, 20 Sep 2026 19:27:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/178300.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 10 Apr 2007 09:21:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Operator als Member oder... on Tue, 10 Apr 2007 09:21:31 GMT]]></title><description><![CDATA[<p>...global? Ich hab mal irgendwo gelesen das manche Operatoren global zu implementieren sind statt als Membermethode. Weiß jemand um welche Operatoren es sich da konkret handelt. Ich vermute das alle Operatoren die über eine konstante Methode implementiert werden würden global gemacht werden sollten, bin mir aber nicht sicher! <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>Danke schonmal im Voraus! <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/1262737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1262737</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Tue, 10 Apr 2007 09:21:31 GMT</pubDate></item><item><title><![CDATA[Reply to Operator als Member oder... on Tue, 10 Apr 2007 09:27:58 GMT]]></title><description><![CDATA[<p>Mit Ausnahme von op=, op[] und op() darfst du selber entscheiden, ob du die Operatoren global oder als Member definieren willst. Global definieren mußt du den Operator nur, wenn du (a) die Klasse des ersten Operanden nicht beeinflussen kannst (z.B. bei Stream-I/O über &lt;&lt; und &gt;&gt;) oder (b) für den ersten Operanden Typumwandlungen möglich sein sollen (z.B. bei eigenen Zahlenklassen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1262740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1262740</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 10 Apr 2007 09:27:58 GMT</pubDate></item><item><title><![CDATA[Reply to Operator als Member oder... on Tue, 10 Apr 2007 09:36:21 GMT]]></title><description><![CDATA[<p>Man dankt! <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/1262755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1262755</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Tue, 10 Apr 2007 09:36:21 GMT</pubDate></item><item><title><![CDATA[Reply to Operator als Member oder... on Tue, 10 Apr 2007 10:22:51 GMT]]></title><description><![CDATA[<p>In der Aufzählung fehlt noch op-&gt;<br />
Die Implementierung als globale Funktion kann dazu dienen, implizite Konvertierungen auf dem ersten Operanden zu erlauben, sie kann aber auch einschränkend genutzt werden, um rvalue-zu-lvalue Konvertierungen (die bei Memberfunktionen auf dem Objektparameter möglich sind) zu unterdrücken - per non-const Referenz. Damit lässt sich das Verhalten eingebauter Operatoren besser approximieren ohne auf const T als Rückgabewert von Funktionen angewiesen zu sein. Also statt</p>
<pre><code class="language-cpp">struct Foo
{
    Foo&amp; operator+=(const Foo&amp;);
    /* ... */
};
</code></pre>
<p>nehmen wir</p>
<pre><code class="language-cpp">struct Bar { /* ... */ };
Bar&amp; operator+=(Bar&amp;, const Bar&amp;);
</code></pre>
<p>Das geht evtl. gegen das Prinzip, Funktionen, die ein Objekt verändern, im Regelfall als Memberfunktionen zu implementieren. Allerdings steht bei Operatoren die syntaktische Vereinfachung bei der Benutzung im Vordergrund - man kann beiden Prinzipien dienen, wenn der Operator selbst auf eine normale Memberfunktion verweist. Mit dem Zuweisungsoperator ist diese Alternative aber leider nicht gegeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1262803</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1262803</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 10 Apr 2007 10:22:51 GMT</pubDate></item><item><title><![CDATA[Reply to Operator als Member oder... on Tue, 10 Apr 2007 14:17:40 GMT]]></title><description><![CDATA[<p>Nochmals danke für die Erklärung!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263023</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263023</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Tue, 10 Apr 2007 14:17:40 GMT</pubDate></item><item><title><![CDATA[Reply to Operator als Member oder... on Tue, 10 Apr 2007 15:03:20 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Die Implementierung als globale Funktion kann dazu dienen, implizite Konvertierungen auf dem ersten Operanden zu erlauben, sie kann aber auch einschränkend genutzt werden, um rvalue-zu-lvalue Konvertierungen (die bei Memberfunktionen auf dem Objektparameter möglich sind) zu unterdrücken - per non-const Referenz.</p>
</blockquote>
<p>Kannst du das bitte nochmal neu formulieren?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263061</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Tue, 10 Apr 2007 15:03:20 GMT</pubDate></item><item><title><![CDATA[Reply to Operator als Member oder... on Tue, 10 Apr 2007 15:30:19 GMT]]></title><description><![CDATA[<p>Michael E. schrieb:</p>
<blockquote>
<p>camper schrieb:</p>
<blockquote>
<p>Die Implementierung als globale Funktion kann dazu dienen, implizite Konvertierungen auf dem ersten Operanden zu erlauben, sie kann aber auch einschränkend genutzt werden, um rvalue-zu-lvalue Konvertierungen (die bei Memberfunktionen auf dem Objektparameter möglich sind) zu unterdrücken - per non-const Referenz.</p>
</blockquote>
<p>Kannst du das bitte nochmal neu formulieren?</p>
<p>Danke</p>
</blockquote>
<p>Ok, ist etwas ungenau; eine r- zu lvalue-Konvertierung im eigentlichen Sinne gibt es ja nicht.</p>
<pre><code class="language-cpp">struct A
{
    A&amp; operator+=(const A&amp;);
};
A&amp; operator-=(A&amp;, const A&amp;);
A foo();
A bar;
</code></pre>
<p>Beim Aufruf von Memberfunktionen darf der Objektparameter ein rvalue sein, dagegen bindet ein rvalue niemals an eine Referenz auf nicht-const:</p>
<pre><code class="language-cpp">foo() += bar; // ok
foo() -= bar; // fehler
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1263085</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263085</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 10 Apr 2007 15:30:19 GMT</pubDate></item><item><title><![CDATA[Reply to Operator als Member oder... on Tue, 10 Apr 2007 17:47:05 GMT]]></title><description><![CDATA[<p><a href="http://gotw.ca/gotw/004.htm" rel="nofollow">http://gotw.ca/gotw/004.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263201</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Tue, 10 Apr 2007 17:47:05 GMT</pubDate></item><item><title><![CDATA[Reply to Operator als Member oder... on Wed, 11 Apr 2007 08:08:52 GMT]]></title><description><![CDATA[<p>Ah jetzt is klar, danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263561</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263561</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Wed, 11 Apr 2007 08:08:52 GMT</pubDate></item></channel></rss>