<?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 und Klassen-Rückgabewerte]]></title><description><![CDATA[<p>Wer kann mir folgenden Zusammenhang erklären:</p>
<pre><code>class A
{
};
</code></pre>
<pre><code>A&amp; A::Method()
</code></pre>
<pre><code>A* A::Method2()
</code></pre>
<p>Was genau bewirken Referenzen und Pointer der Klasse?<br />
Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/324127/pointer-und-klassen-rückgabewerte</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Jul 2026 20:26:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/324127.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 04 Mar 2014 09:07:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pointer und Klassen-Rückgabewerte on Tue, 04 Mar 2014 10:06:07 GMT]]></title><description><![CDATA[<p>Wer kann mir folgenden Zusammenhang erklären:</p>
<pre><code>class A
{
};
</code></pre>
<pre><code>A&amp; A::Method()
</code></pre>
<pre><code>A* A::Method2()
</code></pre>
<p>Was genau bewirken Referenzen und Pointer der Klasse?<br />
Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386468</guid><dc:creator><![CDATA[Sunset]]></dc:creator><pubDate>Tue, 04 Mar 2014 10:06:07 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer und Klassen-Rückgabewerte on Tue, 04 Mar 2014 09:20:45 GMT]]></title><description><![CDATA[<p>Das sind Rückgabewerte von Methoden der Klasse A.</p>
<p><em>Method</em> gibt eine A-Referenz zurück.<br />
<em>Method2</em> gibt einen A-Pointer zurück.</p>
<p>~Edit: Italic Tags~</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386469</guid><dc:creator><![CDATA[Singender Holzkübel]]></dc:creator><pubDate>Tue, 04 Mar 2014 09:20:45 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer und Klassen-Rückgabewerte on Tue, 04 Mar 2014 10:14:21 GMT]]></title><description><![CDATA[<p>Was bedeutet eine A-Referenz genau? Eine Referenz auf die Klasse A?<br />
Wozu dient das in der Praxis?</p>
<p>Wie müssen die return-Werte in der Methode aussehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386476</guid><dc:creator><![CDATA[Sunset]]></dc:creator><pubDate>Tue, 04 Mar 2014 10:14:21 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer und Klassen-Rückgabewerte on Tue, 04 Mar 2014 10:40:12 GMT]]></title><description><![CDATA[<p>Sunset schrieb:</p>
<blockquote>
<p>Was bedeutet eine A-Referenz genau? Eine Referenz auf die Klasse A?</p>
</blockquote>
<p>Mit A-Referenz meine eine Referenz auf eine Instanz einer A-Klasse:</p>
<pre><code>class A{ ... };

A meineAInstanz;
A &amp;meineAReferenz = meineAInstanz;
</code></pre>
<p>Sunset schrieb:</p>
<blockquote>
<p>Wozu dient das in der Praxis?</p>
</blockquote>
<p>Referenzen generell oder die Methoden? Bei Methoden siehe unten.</p>
<p>Sunset schrieb:</p>
<blockquote>
<p>Wie müssen die return-Werte in der Methode aussehen?</p>
</blockquote>
<pre><code>A&amp; A::Method()
{
    return *this; // Gibt die aktualle Instaz als Referenz zurück,
                  // dammit kann man z.B. Methodenaufrufe verketten.
                  // Siehe unten.
    // Oder:
    static A globaleAInstanz; // So kann man z.B Singletons erzeugen.
    return globaleAInstanz;
}

A* A::Method()
{
    return this;  // Das gleiche wie bei der Referenz-Version,
                  // nur eben als Pointer.

    // Oder:
    return new A;

    // Oder:
    static A globaleAInstanz; // Das gleiche wie bei der Referenz-Version,
    return &amp;globaleAInstanz;  // nur eben als Pointer.
}
</code></pre>
<p>So könnte man dann die Methoden verkettet aufrufen:</p>
<pre><code>A meinA;
meinA.Method().Method().Method(); // Usw...
// Ist das gleiche wie:
A meinA;
meinA.Method();
meinA.Method();
meinA.Method();
// Usw ...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2386480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386480</guid><dc:creator><![CDATA[Singender Holzkübel]]></dc:creator><pubDate>Tue, 04 Mar 2014 10:40:12 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer und Klassen-Rückgabewerte on Tue, 04 Mar 2014 10:42:21 GMT]]></title><description><![CDATA[<p>Sunset schrieb:</p>
<blockquote>
<p>Was bedeutet eine A-Referenz genau? Eine Referenz auf die Klasse A?</p>
</blockquote>
<p>Eine Referenz auf eine Instanz der Klasse A.</p>
<p>Sunset schrieb:</p>
<blockquote>
<p>Wozu dient das in der Praxis?</p>
</blockquote>
<p>u.a.</p>
<p>* Vermeidung von teuren Kopien (A A::Method())<br />
* Öffnung der Schnittstelle zur direkten Manipulation von Klassenmembern<br />
* Bei Eigenverweisen: Möglichkeit der Verkettung, bspw. my_a.Method().Method().Method();</p>
<p>Sunset schrieb:</p>
<blockquote>
<p>Wie müssen die return-Werte in der Methode aussehen?</p>
</blockquote>
<p>Kommt drauf an, was die Methode machen soll. Wenn es sich um Eigenverweise handeln soll, dann</p>
<pre><code class="language-cpp">A&amp; A::Method()
{
  return *this;
}

A* A::Method()
{
  return this;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2386481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386481</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Tue, 04 Mar 2014 10:42:21 GMT</pubDate></item></channel></rss>