<?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[operatoroverloading Rückgabewert]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin C++ Anfänger (von C übergestigen <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="😉"
    /> ) und habe folgende Frage:<br />
In einem Tutorial habe ich folgende typen in einer Klassendefinition gesehen:</p>
<pre><code class="language-cpp">class Classenname
{
    ...
    Classenname&amp; operator = (Classenname &amp;param)
    Classenname&amp; operator ++ (void)
    ...
};
</code></pre>
<p>Was mich nun verwundert ist, dass der Rückgabewert der beiden Memberfunktionen eine Referenz ist. Aus C bin ich gewohnt, dass zB folgende operation:</p>
<pre><code class="language-cpp">int x, y;
...
x = 5;
y = x;
...
</code></pre>
<p>... mir für x und y jeweils den Wert 5 liefert, obwohl y eine Kopie von x darstellt. Daher wenn ich nun den Wert von y verändern würde, so würde ich nach wie vor für x 5 haben.<br />
Wenn ich unter der oben genanten Funktionstypisierung der Klasse &quot;Classenname&quot; eine analoge operation durchführe (also eine zuweisung des einen objekts an das andere) was passiert dann? Wiso eine Referenz?</p>
<p>Für Eure Antwort wäre ich Euch sehr dankbar.</p>
<p>mfg <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/135837/operatoroverloading-rückgabewert</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 03:32:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/135837.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 05 Feb 2006 13:55:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to operatoroverloading Rückgabewert on Sun, 05 Feb 2006 13:55:30 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin C++ Anfänger (von C übergestigen <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="😉"
    /> ) und habe folgende Frage:<br />
In einem Tutorial habe ich folgende typen in einer Klassendefinition gesehen:</p>
<pre><code class="language-cpp">class Classenname
{
    ...
    Classenname&amp; operator = (Classenname &amp;param)
    Classenname&amp; operator ++ (void)
    ...
};
</code></pre>
<p>Was mich nun verwundert ist, dass der Rückgabewert der beiden Memberfunktionen eine Referenz ist. Aus C bin ich gewohnt, dass zB folgende operation:</p>
<pre><code class="language-cpp">int x, y;
...
x = 5;
y = x;
...
</code></pre>
<p>... mir für x und y jeweils den Wert 5 liefert, obwohl y eine Kopie von x darstellt. Daher wenn ich nun den Wert von y verändern würde, so würde ich nach wie vor für x 5 haben.<br />
Wenn ich unter der oben genanten Funktionstypisierung der Klasse &quot;Classenname&quot; eine analoge operation durchführe (also eine zuweisung des einen objekts an das andere) was passiert dann? Wiso eine Referenz?</p>
<p>Für Eure Antwort wäre ich Euch sehr dankbar.</p>
<p>mfg <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/986459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/986459</guid><dc:creator><![CDATA[linu*x*bie]]></dc:creator><pubDate>Sun, 05 Feb 2006 13:55:30 GMT</pubDate></item><item><title><![CDATA[Reply to operatoroverloading Rückgabewert on Sun, 05 Feb 2006 14:03:07 GMT]]></title><description><![CDATA[<p>Korrekt lautet der Zuweisungsoperator</p>
<pre><code class="language-cpp">Classenname&amp; operator = (const Classenname &amp;param)
</code></pre>
<p>Was üblicherweise (auch implizit) so implementiert wird dass operator= Kopien der in param enthaltenen Daten erzeugt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/986470</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/986470</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sun, 05 Feb 2006 14:03:07 GMT</pubDate></item><item><title><![CDATA[Reply to operatoroverloading Rückgabewert on Sun, 05 Feb 2006 14:21:43 GMT]]></title><description><![CDATA[<p>Danke für Deine Antwort <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>LordJaxom schrieb:</p>
<blockquote>
<p>[...]<br />
Was üblicherweise (auch implizit) so implementiert wird dass operator= Kopien der in param enthaltenen Daten erzeugt.</p>
</blockquote>
<p>Hmm... aber wenn das Ganze eine Kopie zurückgibt, wiso ist dann der Rückgabewert des ganzen eine Referenz?<br />
Es heist doch:</p>
<blockquote>
<p><strong>Classenname&amp;</strong> operator = (const Classenname &amp;param)</p>
</blockquote>
<p><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>meiner (Anfänger-)ansicht nach müsste das so sein:</p>
<blockquote>
<p><strong>Classenname</strong> operator = (const Classenname &amp;param)</p>
</blockquote>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/986486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/986486</guid><dc:creator><![CDATA[linu*x*bie]]></dc:creator><pubDate>Sun, 05 Feb 2006 14:21:43 GMT</pubDate></item><item><title><![CDATA[Reply to operatoroverloading Rückgabewert on Sun, 05 Feb 2006 14:56:09 GMT]]></title><description><![CDATA[<p>Das ganze gibt ja keine Kopie zurück, sondern das Objekt, dem zugewiesen wurde <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="😉"
    /></p>
<pre><code class="language-cpp">int x;
int &amp;y = (x = 12);
</code></pre>
<p>Hier ist x = 12 im Prinzip ein Aufruf von x.operator=(12). Der Operator erhält eine Konstante (zugegeben, 12 als Zahlenwert ist hier schon sehr konstant), erstellt von dieser eine Kopie und legt sie in sich selbst ab (für int vielleicht blöd beschrieben). Der Rückgabewert der Zuweisung ist eine Referenz auf x. Nach diesem Code ist y also eine Referenz auf x, y und x enthalten (dieselbe) 12.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/986513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/986513</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sun, 05 Feb 2006 14:56:09 GMT</pubDate></item><item><title><![CDATA[Reply to operatoroverloading Rückgabewert on Sun, 05 Feb 2006 15:15:28 GMT]]></title><description><![CDATA[<p>ahsoooo.... jetzt hab ichs verstanden!</p>
<p>Vielen Dank für die Umfangreiche Hilfe <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>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/986537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/986537</guid><dc:creator><![CDATA[linu*x*bie]]></dc:creator><pubDate>Sun, 05 Feb 2006 15:15:28 GMT</pubDate></item></channel></rss>