<?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[Referenz als Rückgabe]]></title><description><![CDATA[<p>Was ist eurer Meinung nach eine Faustregel, wann man als Rückgabetyp einer Funktion / Methode eine Referenz zurückgibt? Immer nur dann wenn man ein Objekt zurückgibt (also z.B. auch &quot;string&quot;?)?</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/211883/referenz-als-rückgabe</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 14:15:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/211883.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 28 Apr 2008 19:26:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Referenz als Rückgabe on Mon, 28 Apr 2008 19:26:54 GMT]]></title><description><![CDATA[<p>Was ist eurer Meinung nach eine Faustregel, wann man als Rückgabetyp einer Funktion / Methode eine Referenz zurückgibt? Immer nur dann wenn man ein Objekt zurückgibt (also z.B. auch &quot;string&quot;?)?</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1499998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1499998</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Mon, 28 Apr 2008 19:26:54 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz als Rückgabe on Mon, 28 Apr 2008 20:38:02 GMT]]></title><description><![CDATA[<p>Ich würde mal sagen, wenn du ein &quot;grosses&quot; Objekt zurück gibst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1500065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1500065</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 28 Apr 2008 20:38:02 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz als Rückgabe on Tue, 29 Apr 2008 16:19:46 GMT]]></title><description><![CDATA[<p>Nur dann wenn es notwändig (EDIT: nein, das schreibt man nicht so :D) ist.</p>
<p>z.B.</p>
<ol>
<li>Wenn das Objekt nicht kopierbar ist.</li>
<li>Wenn die Referenz gebraucht wird um das Objekt zu verändern (oder allgemein: wenn das Objekt nicht kopiert werden darf, weil sich sonst das Verhalten des Programms ändern würde).</li>
<li>Wenn man eine Stelle isoliert hat wo es einfach &quot;zu teuer&quot; ist ein Objekt die ganze Zeit zu kopieren.</li>
</ol>
<p>Bei (1) und (3) aber auch erstmal an boost::shared_ptr&lt;&gt; oder ähnliches denken.</p>
<p>Grund: mit Referenzen kann man IMO schneller Mist bauen als mit Kopien als Rückgabewert. Kopien sind einfacher zu verstehen. Kopien können nicht auf Objekte zeigen die schon nichtmehr existieren. Kopien können nicht &quot;hinterrücks&quot; von anderen Threads verändert werden. Kopien werden nicht beim Aufruf irgendeiner Funktion überraschend ihren Wert ändern. Kopien sind gut, Kopien sind dein Freund <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/1500139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1500139</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 29 Apr 2008 16:19:46 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz als Rückgabe on Tue, 29 Apr 2008 06:45:58 GMT]]></title><description><![CDATA[<p>Bei den Nachteilen von Referenzen kann ich nur zustimmen.</p>
<p>Es ist schon bitterböse wenn man überall Referenzen oder Pointer benutzt und somit theoretisch jede Funktion das Objekt verändern kann. In solchen Fällen braucht man eine sinnvolle Doku für jede Funktion, welche unter anderem angibt welche Parameter verändert wird und welche nicht. Aus dem Grund hat ja Microsoft in seiner Doku überall ein [in], [out] vor den Parametern-Doku stehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1500204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1500204</guid><dc:creator><![CDATA[Bitte ein Bit]]></dc:creator><pubDate>Tue, 29 Apr 2008 06:45:58 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz als Rückgabe on Tue, 29 Apr 2008 07:01:12 GMT]]></title><description><![CDATA[<p>Beachten muss man auch unbedingt, keine Referenzen auf lokale Objekte einer Funktion zurückzugeben. Das ist schneller passiert als man denkt <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/1500214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1500214</guid><dc:creator><![CDATA[mikey]]></dc:creator><pubDate>Tue, 29 Apr 2008 07:01:12 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz als Rückgabe on Tue, 29 Apr 2008 10:06:08 GMT]]></title><description><![CDATA[<p>Ich denke auch, dass man das hald in jedem Fall gut überlegen muss/sollte. (Wie eigentlich praktisch alles, was man schreibt).<br />
Eigentlich sollte man so wenig Möglichkeiten geben, etwas &quot;böses&quot; zu machen. (Wie oben schon gesagt). Also nur etwas zusätzlich geben, wenn man einen guten Grund dazu hat.</p>
<p>btw:</p>
<p>hustbaer schrieb:</p>
<blockquote>
<p>notwändig</p>
</blockquote>
<p>Sorry, aber, als ich das gelesen habe.. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Hat mich irgendwie an den Erdbären erinnert.. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1500348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1500348</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 29 Apr 2008 10:06:08 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz als Rückgabe on Tue, 29 Apr 2008 16:18:40 GMT]]></title><description><![CDATA[<p>Rofl, bin ich doof. Ich wende, du wendest, er/sie/es wendet, ...<br />
Muss ich das jetzt 100x auf die Tafel schreiben? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>p.S.: ärdbäären <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1500674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1500674</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 29 Apr 2008 16:18:40 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz als Rückgabe on Tue, 29 Apr 2008 18:11:49 GMT]]></title><description><![CDATA[<p>mikey schrieb:</p>
<blockquote>
<p>Beachten muss man auch unbedingt, keine Referenzen auf lokale Objekte einer Funktion zurückzugeben. Das ist schneller passiert als man denkt <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>
</blockquote>
<p>Keine Ahnung also mir ist sowas noch nie passiert.<br />
Wenn man den Sinn eines Objektes in einer Funktion kennt, dann sollte das auch nicht passieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1500737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1500737</guid><dc:creator><![CDATA[lokalizer]]></dc:creator><pubDate>Tue, 29 Apr 2008 18:11:49 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz als Rückgabe on Tue, 29 Apr 2008 19:34:33 GMT]]></title><description><![CDATA[<p>wenn du ein neues objekt allokierst über die funktion (prototyping pattern, factory pattern, etc) gib einen pointer zurück, das verdeutlicht dass du in charge bist dich um dieses objekt zu kümmern und es irgendwann wieder zu löschen</p>
<p>wenn du in einer klasse selbst member variablen hast die pointer auf andere objekte sind und du möchtest sie über getter methoden holen würde ich sie als referenzen zurückgeben, dann kommt niemand auf die idee diese objekte zu deleten</p>
<p>das argument dass wenn man nicht mit kopien arbeitet alles alles verändern kann (da es ja referenzen/pointer sind) find ich schlecht<br />
ich will garnicht anfangen von speicher oder performance oder sowas zu reden sondern:<br />
gerade wenn man kopien zurück und übergeben würde hätte man vllt als anwender die illusion man verändert das objekt wirklich - würde aber nur die kopie verändern<br />
das kann schnell zu schwer auffindbaren bugs führen<br />
dasselbe bei parametern, ich finde eine faustregel ist dass eingabeparameter auch wirklich eingabeparameter sein sollte und nicht mehr<br />
was ich damit meine ist dass sowas wie</p>
<pre><code class="language-cpp">double CalculateSomething(int aValue)
{
    aValue /= sqrt(PI);
    return aValue;
}
</code></pre>
<p>falsch ist, aValue ist ein eingabeparameter und sollte nicht als variable verwendet werden</p>
<p>wenn man sich an sowas hält dann unterlaufen einem nicht so leicht blöde fehler (wenn die funktion länger wäre will ich später vllt auf aValue zugreifen wieder und bräuchte den ursprungswert aber ich hab aValue schon verändert - wenn aValue nich sowas leichtes wäre wie ein integer sondern eine instanz einer klasse würde man überhaupt noch schwieriger drauf kommen)</p>
<p>von da her macht es auch sinn eingabeparameter immer als const zu markieren und als referenz zu übergeben finde ich (außer vllt bei native datentypen, da find ich ist es ein overhead und übergebe sie einfach als int etc und achte einfach darauf sie nicht als variablen sondern als eingabeparameter zu verwenden)</p>
<p>wenn ich etwas aber als rückgabeparameter verwenden möchte (weil ich einen pointer auf das objekt übergebe und es in der funktion zb allokiere) dann halt ein pointer</p>
<p>ähnlich bei durchlaufparametern (wenn also der sinn der funktion ist das objekt wirklich auch zu verändern) - allerdings ist es bei denen geschmackssache ob man sie als referenzen oder pointer übergibt</p>
<p>man muss sich halt für sich selbst überlegen wo es sinn macht pointer und wo referenzen zu verwenden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1500782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1500782</guid><dc:creator><![CDATA[Vevusio]]></dc:creator><pubDate>Tue, 29 Apr 2008 19:34:33 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz als Rückgabe on Tue, 29 Apr 2008 21:26:49 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Rofl, bin ich doof. Ich wende, du wendest, er/sie/es wendet, ...<br />
Muss ich das jetzt 100x auf die Tafel schreiben? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>p.S.: ärdbäären <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Ach..das war keine Absicht?!.. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Na dann. Mindestens 1'000'000 mal. Aber ich gebe dir einen kleinen Tipp. <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="😉"
    /><br />
<a href="http://travian-projekt.de/travian/img/stuff/NiceTry.gif" rel="nofollow">http://travian-projekt.de/travian/img/stuff/NiceTry.gif</a></p>
<p>btt:<br />
Ansonsten mache ich das so ähnlich, wie Vevusio. An erster Stelle einfach mal sehr viel nachdenken, was man da so machen könnte, dass es nicht so rauskommt, wie ich es will. Und dann das verhindern. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1500844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1500844</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 29 Apr 2008 21:26:49 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz als Rückgabe on Tue, 29 Apr 2008 21:50:12 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p><a href="http://travian-projekt.de/travian/img/stuff/NiceTry.gif" rel="nofollow">http://travian-projekt.de/travian/img/stuff/NiceTry.gif</a></p>
</blockquote>
<p>lol <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1500859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1500859</guid><dc:creator><![CDATA[sothis_]]></dc:creator><pubDate>Tue, 29 Apr 2008 21:50:12 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz als Rückgabe on Wed, 30 Apr 2008 15:25:35 GMT]]></title><description><![CDATA[<p>ich würde immer dann Referenzen auf Objekte zurückgeben, wenn es Arbeit erspart. Es wird doch bei jedem überladenem &lt;&lt; operator für ostream eine Referenz zurückgegeben. Ähnliche Situationen gibt es auch wo anders auch häufig. Oft kann man es auch bei so Uni-Aufgaben verwenden, wo man so ein Stack implementieren soll, wenn hier die methoden eine Referenz auf das Objekt selbst zurückliefern, kann das Schreibarbeit, sowie Platz sparen, wenn man verschiedene Operationen mit dem Stack verknüpfen möchte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1501283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1501283</guid><dc:creator><![CDATA[Krux]]></dc:creator><pubDate>Wed, 30 Apr 2008 15:25:35 GMT</pubDate></item></channel></rss>