<?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[Unterschied bei get-Methoden]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine ganz einfache Frage, nichts Kompliziertes, allerdings komme ich trotz meiner Suche, auch hier im Forum, zu keiner Antwort.</p>
<pre><code>const string&amp; getName() { return name; }
double getStand() { return stand; }
</code></pre>
<p>Das ist ein aus einem Beispiel aus dem Buch 'C++ lernen und professionell anwenden'.</p>
<p>Wieso ist der Rückgabewert nur beim String eine konstante Refferenz und nicht bei Double?<br />
Sind ja beides get-Methoden.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/331318/unterschied-bei-get-methoden</link><generator>RSS for Node</generator><lastBuildDate>Fri, 01 May 2026 17:38:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/331318.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 21 Feb 2015 22:21:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unterschied bei get-Methoden on Mon, 23 Feb 2015 19:39:18 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine ganz einfache Frage, nichts Kompliziertes, allerdings komme ich trotz meiner Suche, auch hier im Forum, zu keiner Antwort.</p>
<pre><code>const string&amp; getName() { return name; }
double getStand() { return stand; }
</code></pre>
<p>Das ist ein aus einem Beispiel aus dem Buch 'C++ lernen und professionell anwenden'.</p>
<p>Wieso ist der Rückgabewert nur beim String eine konstante Refferenz und nicht bei Double?<br />
Sind ja beides get-Methoden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2443744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2443744</guid><dc:creator><![CDATA[psycmon]]></dc:creator><pubDate>Mon, 23 Feb 2015 19:39:18 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied bei get-Methoden on Sat, 21 Feb 2015 22:35:05 GMT]]></title><description><![CDATA[<p>Ein double zu kopieren ist nicht aufwendig. Das sind normalerweise 8 Bytes. Bei einem string kann das schon aufwendiger werden, da er jede Menge Daten speichern kann. Mit einer konstanten Referenz wird diese Kopie vermieden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2443746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2443746</guid><dc:creator><![CDATA[patrick246]]></dc:creator><pubDate>Sat, 21 Feb 2015 22:35:05 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied bei get-Methoden on Sat, 21 Feb 2015 22:37:13 GMT]]></title><description><![CDATA[<p>Im ersten Fall wird eine Referenz zurückgegeben, also der dein eigener String! Der soll vom Anwender nicht verändert werden.<br />
Im zweiten Fall ist es return-by-value also der Wert...Dieser ist kein l-value und kann durch Zuweisung in einem Double gespeichert werden, es wird also kopiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2443747</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2443747</guid><dc:creator><![CDATA[Erleuchter]]></dc:creator><pubDate>Sat, 21 Feb 2015 22:37:13 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied bei get-Methoden on Sun, 22 Feb 2015 15:48:24 GMT]]></title><description><![CDATA[<p>patrick246 schrieb:</p>
<blockquote>
<p>Ein double zu kopieren ist nicht aufwendig. Das sind normalerweise 8 Bytes. Bei einem string kann das schon aufwendiger werden, da er jede Menge Daten speichern kann. Mit einer konstanten Referenz wird diese Kopie vermieden.</p>
</blockquote>
<p>Das war auch meine Schlussfolgerung, aber ich war mir nicht sicher.</p>
<p>Erleuchter schrieb:</p>
<blockquote>
<p>Im ersten Fall wird eine Referenz zurückgegeben, also der dein eigener String! Der soll vom Anwender nicht verändert werden.<br />
Im zweiten Fall ist es return-by-value also der Wert...Dieser ist kein l-value und kann durch Zuweisung in einem Double gespeichert werden, es wird also kopiert.</p>
</blockquote>
<p>Habe ich das richtig verstanden, weil man den Wert einfach zuweisen kann, nimmt man in dem Fall keine Refferenz oder wie?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2443815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2443815</guid><dc:creator><![CDATA[psycmon]]></dc:creator><pubDate>Sun, 22 Feb 2015 15:48:24 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied bei get-Methoden on Sun, 22 Feb 2015 15:46:04 GMT]]></title><description><![CDATA[<p>gf.sunshen schrieb:</p>
<blockquote>
<p>Habe ich das richtig verstanden, weil man den Wert einfach zu weisen kann, nimmt man in dem Fall keine Refferenz oder wie?</p>
</blockquote>
<p>Kopieren wuerde bei kleineren Typen mindestens genauso lange dauern, wie eine Referenz zu uebergeben. Die Referenz wird intern ja als pointer uebergeben, also 4 oder 8 byte. Wenn man in dem Bereich liegt, macht das keinen Unterschied und by-value zu uebergeben ist oft einfacher und uebersichtlicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2443819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2443819</guid><dc:creator><![CDATA[Marthog]]></dc:creator><pubDate>Sun, 22 Feb 2015 15:46:04 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied bei get-Methoden on Sun, 22 Feb 2015 15:47:56 GMT]]></title><description><![CDATA[<p>Nein. Zuweisen kannst du das schon, aber es soll nicht verändert werden können.</p>
<p>Einen std::string kopieren ist teuer (stell dir vor du hast ein riesiges XML von mehreren Millionen Zeichen/Zeilen da gespeichert), also gibst du es per Referenz zurück (was ja intern auch nur ein Zeiger ist) und das ist effektiv eine Kopie von 4 bzw. 8 Byte (auf den üblichen Systemen 32/64 Bit).<br />
Aber jetzt kann der Anwender deinen String ändern und damit eventuelle interne Zustände zerstören.<br />
Die Lösung ist, dass du die Referenz konstant machst. Jetzt kann der User nur lesen, aber nicht ändern oder schreiben.</p>
<p>Wenn er doch schrieben will, kann er sich den string kopieren und da drin rumschreiben und später die entsprechende Getter Methode deiner Klasse aufrufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2443822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2443822</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sun, 22 Feb 2015 15:47:56 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied bei get-Methoden on Sun, 22 Feb 2015 15:51:12 GMT]]></title><description><![CDATA[<p>Danke an euch alle, ich habe es jetzt verstanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2443824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2443824</guid><dc:creator><![CDATA[psycmon]]></dc:creator><pubDate>Sun, 22 Feb 2015 15:51:12 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied bei get-Methoden on Sun, 22 Feb 2015 18:19:37 GMT]]></title><description><![CDATA[<p>patrick246 schrieb:</p>
<blockquote>
<p>Ein double zu kopieren ist nicht aufwendig. Das sind normalerweise 8 Bytes. Bei einem string kann das schon aufwendiger werden, da er jede Menge Daten speichern kann. Mit einer konstanten Referenz wird diese Kopie vermieden.</p>
</blockquote>
<p>wobei der Bezeichner &quot;name&quot; jetzt auch nicht gerade danach klingt, als würde eine by-value Kopie Terabytes verschlingen. Aber Du hast natürlich recht, es kann aufwändiger werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2443862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2443862</guid><dc:creator><![CDATA[großbuchstaben]]></dc:creator><pubDate>Sun, 22 Feb 2015 18:19:37 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied bei get-Methoden on Mon, 23 Feb 2015 16:35:17 GMT]]></title><description><![CDATA[<p>Der string muss erst Speicher anfordern und in diesen kopieren, während bei der Referenz normalerweise nur mit der Adresse gearbeitet wird. Es müssen ja nicht viele Daten im String sein, aber ich würde trotzdem behaupten, dass letzteres schneller ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2444017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2444017</guid><dc:creator><![CDATA[patrick246]]></dc:creator><pubDate>Mon, 23 Feb 2015 16:35:17 GMT</pubDate></item></channel></rss>