<?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[Pointer-Verständnis-Frage]]></title><description><![CDATA[<p>Hallo,... ich frische grad mein C++ ein bisschen auf und folgende Frage ist aufgetreten:</p>
<pre><code class="language-cpp">class Calc
{
private:
    int m_nValue;

public:
    Calc() { m_nValue = 0; }

    Calc&amp; Add(int nValue) { m_nValue += nValue; return *this; }
    Calc&amp; Sub(int nValue) { m_nValue -= nValue; return *this; }
    Calc&amp; Mult(int nValue) { m_nValue *= nValue; return *this; }

    int GetValue() { return m_nValue; }
};
</code></pre>
<p>Man nutzt in diesem Beispiel *this, damit man durch eine Verkettung von Funktionen mehrere Aufgaben gleichzeitig erledigen kann. Aber was bedeutet das Calc&amp;? Der Returnwert muss das Objekt sein, damit man Add(2).Sub(3)... usw., aber wieso das &amp; am Ende?</p>
<p>ps.: ich bin eine Java-geschädigte Person, die als Returnwert Calc, aber nicht Calc + komisches Sonderzeichen erwartet.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/251031/pointer-verständnis-frage</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 19:37:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/251031.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 28 Sep 2009 12:09:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pointer-Verständnis-Frage on Mon, 28 Sep 2009 12:09:35 GMT]]></title><description><![CDATA[<p>Hallo,... ich frische grad mein C++ ein bisschen auf und folgende Frage ist aufgetreten:</p>
<pre><code class="language-cpp">class Calc
{
private:
    int m_nValue;

public:
    Calc() { m_nValue = 0; }

    Calc&amp; Add(int nValue) { m_nValue += nValue; return *this; }
    Calc&amp; Sub(int nValue) { m_nValue -= nValue; return *this; }
    Calc&amp; Mult(int nValue) { m_nValue *= nValue; return *this; }

    int GetValue() { return m_nValue; }
};
</code></pre>
<p>Man nutzt in diesem Beispiel *this, damit man durch eine Verkettung von Funktionen mehrere Aufgaben gleichzeitig erledigen kann. Aber was bedeutet das Calc&amp;? Der Returnwert muss das Objekt sein, damit man Add(2).Sub(3)... usw., aber wieso das &amp; am Ende?</p>
<p>ps.: ich bin eine Java-geschädigte Person, die als Returnwert Calc, aber nicht Calc + komisches Sonderzeichen erwartet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785350</guid><dc:creator><![CDATA[sharp]]></dc:creator><pubDate>Mon, 28 Sep 2009 12:09:35 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer-Verständnis-Frage on Mon, 28 Sep 2009 12:14:14 GMT]]></title><description><![CDATA[<blockquote>
<p>Aber was bedeutet das Calc&amp;?</p>
</blockquote>
<p>&amp; bedeuted hier Referenz.<br />
Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785356</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Mon, 28 Sep 2009 12:14:14 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer-Verständnis-Frage on Mon, 28 Sep 2009 12:55:57 GMT]]></title><description><![CDATA[<p>...kann man natürlich so machen. Es kann natürlich sein, dass jemand die Funktionen aufruft, ohne das Objekt ändern zu wollen. Aus dem Grund hatte ich früher in meiner Java-Klasse &quot;Vector3d&quot; auch zwei Versionen (&quot;plusEquals&quot; und &quot;plus&quot; für += und +).</p>
<p>In C++ geht das dann aber doch noch eleganter. Du kannst gleich die arithmetischen Operatoren überladen. Da weiß man dann sofort, woran man ist. Und: Die eigene Klasse lässt sich auch meist in generischen Algorithmen einsetzen. Zum Beispiel habe ich neulich meine point&lt;double,3&gt;-Klasse in eine generische Funktion gesteckt, die interpolieren soll. Weil ich für point&lt;double,3&gt; auch entsprechende Operatoren zur Verfügung gestellt hatte, klappte das einwandfrei ohne Extrawurst.</p>
<pre><code class="language-cpp">class dings {
  ...
public:
  ...
  dings&amp; operator+=(dings const&amp; d);
  ...
};

dings operator+(dings const&amp; a, dings const&amp; b)
{
  dings ret = a; ret += b; return ret;
}
</code></pre>
<p>Da this ein Zeiger ist und das Ergebnis einer Zuweisung eine Referenz auf das zugewiesene Objekt sein sollte, findest Du in den ?= Operatoren (mit +, -, *, ... anstelle von ?) oft &quot;return *this;&quot; -- der this-Zeiger wird dereferenziert.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785390</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785390</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Mon, 28 Sep 2009 12:55:57 GMT</pubDate></item></channel></rss>