<?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[Parameter als Referenz übergeben unnötig?]]></title><description><![CDATA[<p>Wie ist das eigentlich: Wenn ich einen Parameter als konstante Referenz kennzeichne, z.B.:</p>
<pre><code class="language-cpp">Bruch operator * (const Bruch&amp;)
</code></pre>
<p>möchte ich doch damit vermeiden, dass eine überflüssige Kopie erstellt wird. Ist das aber wirklich notwendig, oder nimmt der Compiler solche Optimierungen selber vor?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/300712/parameter-als-referenz-übergeben-unnötig</link><generator>RSS for Node</generator><lastBuildDate>Tue, 04 Aug 2026 00:32:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/300712.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 08 Mar 2012 20:46:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Thu, 08 Mar 2012 20:46:25 GMT]]></title><description><![CDATA[<p>Wie ist das eigentlich: Wenn ich einen Parameter als konstante Referenz kennzeichne, z.B.:</p>
<pre><code class="language-cpp">Bruch operator * (const Bruch&amp;)
</code></pre>
<p>möchte ich doch damit vermeiden, dass eine überflüssige Kopie erstellt wird. Ist das aber wirklich notwendig, oder nimmt der Compiler solche Optimierungen selber vor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2189934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2189934</guid><dc:creator><![CDATA[Dicker]]></dc:creator><pubDate>Thu, 08 Mar 2012 20:46:25 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Thu, 08 Mar 2012 20:55:37 GMT]]></title><description><![CDATA[<p>Dicker schrieb:</p>
<blockquote>
<p>Wenn ich einen Parameter als konstante Referenz kennzeichne</p>
</blockquote>
<p>Es gibt keine konstanten Referenzen, nenne sich bitte const-reference.</p>
<p>Dicker schrieb:</p>
<blockquote>
<pre><code class="language-cpp">Bruch operator * (const Bruch&amp;)
</code></pre>
<p>möchte ich doch damit vermeiden, dass eine überflüssige Kopie erstellt wird.</p>
</blockquote>
<p>Richtig.</p>
<p>Dicker schrieb:</p>
<blockquote>
<p>Ist das aber wirklich notwendig, oder nimmt der Compiler solche Optimierungen selber vor?</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="😕"
    /> Wenn er das machte, dann würde ja ein Sprachfeature ausraddiert werden, da by-value dann nicht mehr möglich wäre.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2189935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2189935</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 08 Mar 2012 20:55:37 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Thu, 08 Mar 2012 21:11:19 GMT]]></title><description><![CDATA[<p>Klar soll der Compiler nicht einfach alle Parameter als const-reference behandeln. Aber kann der Compiler nicht erkennen, wann eine Übergabe per value keinen Sinn macht? Wenn z.B. nur lesend auf den Parameter zugegriffen würde. Ich stehe da gerade etwas auf dem Schlauch...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2189940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2189940</guid><dc:creator><![CDATA[Dicker]]></dc:creator><pubDate>Thu, 08 Mar 2012 21:11:19 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Thu, 08 Mar 2012 21:37:16 GMT]]></title><description><![CDATA[<p>Und woher soll der Compiler wissen, dass auf den Parameter nur lesend zugegriffen wird? In der Regel sieht er den Quellcode der Zielfunktion nicht, sondern nur deren Signatur und muss dann Code bauen, um so eine Funktion aufzurufen. Und als die Funktion selber übersetzt wurde, musste Code erstellt werden, der annimmt dass die Funktion eben auch passend zu dieser Signatur aufgerufen wird, denn wie sollte man sie sonst aufrufen können?</p>
<p>P.S.: Außerdem hat Übergabe per value durchaus einige Vorteile.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2189942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2189942</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 08 Mar 2012 21:37:16 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Fri, 09 Mar 2012 13:33:55 GMT]]></title><description><![CDATA[<p>Einleuchtend mit der getrennten Kompilierung. Aber könnte nicht der Linker den Zwischencode analysieren und dann entsprechend optimierten Code liefern?</p>
<p>Ich möchte einfach gerade nur herausfinden, wie wichtig es ist, den Code selber zu optimieren, und was der Compiler/Linker von sich aus schon optimiert. z.B. schlagen einige Leute vor, dass Bit-Schiebe-Operationen schneller seien als das multiplizieren mit einer 2er-Potenz. Oder das Benutzen von inline-Funktionen. Mir fehlt da der Durchblick...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2190103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190103</guid><dc:creator><![CDATA[Dicker]]></dc:creator><pubDate>Fri, 09 Mar 2012 13:33:55 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Fri, 09 Mar 2012 13:37:30 GMT]]></title><description><![CDATA[<p>[quote=&quot;Gugelmoser&quot;]</p>
<p>Dicker schrieb:</p>
<blockquote>
<p>Wenn ich einen Parameter als konstante Referenz kennzeichne</p>
</blockquote>
<p>Es gibt keine konstanten Referenzen, nenne sich bitte const-reference.<br />
Was ist denn das fuer ein Schwachsinn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2190104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190104</guid><dc:creator><![CDATA[SonQuatsch]]></dc:creator><pubDate>Fri, 09 Mar 2012 13:37:30 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Fri, 09 Mar 2012 13:48:10 GMT]]></title><description><![CDATA[<p>Dicker schrieb:</p>
<blockquote>
<p>Einleuchtend mit der getrennten Kompilierung. Aber könnte nicht der Linker den Zwischencode analysieren und dann entsprechend optimierten Code liefern?</p>
</blockquote>
<p>Fakt bleibt aber, dass der Code einfach eine andere Bedeutung bekommt. Eine const&amp; und eine Kopie sind eben nicht genau das Gleiche, auch wenn sie teilweise dem gleichen Zweck dienen können.<br />
Faustregel:<br />
&lt;= 8 Byte -&gt; Kopie<br />
&gt; 8 Byte / Unbekannt -&gt; const&amp;<br />
Und in Kopierkonstruktoren brauchst du z.B. immer eine const&amp;.</p>
<p>Dicker schrieb:</p>
<blockquote>
<p>z.B. schlagen einige Leute vor, dass Bit-Schiebe-Operationen schneller seien als das multiplizieren mit einer 2er-Potenz.</p>
</blockquote>
<p>Da haben sie recht, aber das wird der Compiler wohl optimieren. Was halt daran liegt, dass beide Operationen auch wirklich äquivalent sind.</p>
<p>Dicker schrieb:</p>
<blockquote>
<p>Oder das Benutzen von inline-Funktionen. Mir fehlt da der Durchblick...</p>
</blockquote>
<p>Das benutzt man eigentlich nur noch, wenn man freie Funktionen im Header definiert, damit der Linker sich nicht beschwert. Es ist halt ein Tipp an den Compiler, aber nach meiner Erfahrung wird der meistens ignoriert. <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>
<p>Edit:</p>
<p>SonQuatsch schrieb:</p>
<blockquote>
<p>Was ist denn das fuer ein Schwachsinn?</p>
</blockquote>
<p>LOL, dann zeig uns doch mal eine konstante Referenz. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2190106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190106</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Fri, 09 Mar 2012 13:48:10 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Fri, 09 Mar 2012 13:49:32 GMT]]></title><description><![CDATA[<p>Dicker schrieb:</p>
<blockquote>
<p>Einleuchtend mit der getrennten Kompilierung. Aber könnte nicht der Linker den Zwischencode analysieren und dann entsprechend optimierten Code liefern?</p>
</blockquote>
<p>Ja, das gibt es neuerdings und du darfst durchaus davon ausgehen, dass solche Optimierungen dann auch möglich werden.</p>
<blockquote>
<p>Ich möchte einfach gerade nur herausfinden, wie wichtig es ist, den Code selber zu optimieren,</p>
</blockquote>
<p>Das wichtigste ist erst einmal, dass der Algorithmus stimmt. Und man sollte keine großen Dummheiten machen. Denn eine unnötige Kopie eines großen Objekts wegzuoptimieren, ist dann doch schon eine ziemlich große Aktion, da machst du es lieber gleich richtig. Zwischen Kopie und const-Referenz besteht dann nämlich doch ein großer Unterschied, das lässt sich nicht unbedingt äquivalent austauschen. Und man sollte sich mal die C++11-Mittel angucken, dem Compiler noch mehr entgegen zu kommen, um solche Kopien zu vermeiden.<br />
Kleinere Optimierungen in einfachen Rechnungen werden hingegen in der Regel extrem gut optimiert:</p>
<blockquote>
<p>z.B. schlagen einige Leute vor, dass Bit-Schiebe-Operationen schneller seien als das multiplizieren mit einer 2er-Potenz.</p>
</blockquote>
<p>Dies zum Beispiel galt vielleicht mal vor vielen Jahrzehnten.</p>
<blockquote>
<p>Oder das Benutzen von inline-Funktionen.</p>
</blockquote>
<p>Noch so ein Beispiel dafür: Inline ist praktisch nur noch wegen seines Einflusses auf die Bindung von Bedeutung. Wenn der Compiler (oder ein optimierender Linker) den Funktionscode vorliegen hat, wird er die Möglichkeit von Inlining prüfen, egal ob inline oder nicht. Wenn er die Funktion nicht vorliegen hat, dann ist es egal ob sie inline ist oder nicht, dann wird eben ein normaler Call gemacht.<br />
Daraus kannst du aber immerhin mitnehmen, dass es eine gute Idee ist, wenn kleine Funktionen dem Compiler als Code vorliegt (wofür sie in der Regel auch inline sein muss, falls man sie in mehreren ÜË benutzt). Oder falls dies nicht möglich ist, dann sollte man zur Linkzeit optimieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2190109</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190109</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 09 Mar 2012 13:49:32 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Fri, 09 Mar 2012 13:46:47 GMT]]></title><description><![CDATA[<p>Eigentlich ist doch jede Referenz konstant, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2190110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190110</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Fri, 09 Mar 2012 13:46:47 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Fri, 09 Mar 2012 13:50:44 GMT]]></title><description><![CDATA[<p>Eisflamme schrieb:</p>
<blockquote>
<p>Eigentlich ist doch jede Referenz konstant, oder?</p>
</blockquote>
<p>Eben. Konstante Referenz ist daher eine Tautologie. Und zwar eine böse, denn der Sprecher meint in der Regel etwas anderes, was dann aber gar nicht rüber kommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2190112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190112</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 09 Mar 2012 13:50:44 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Fri, 09 Mar 2012 13:52:07 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Da haben sie recht, aber das wird der Compiler wohl optimieren. Was halt daran liegt, dass beide Operationen auch wirklich äquivalent sind.</p>
</blockquote>
<p>Wasn Schwachsinn. Soll Prozessoren geben, bei dem eine Multiplikation schneller ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2190113</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190113</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 09 Mar 2012 13:52:07 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Fri, 09 Mar 2012 13:53:22 GMT]]></title><description><![CDATA[<p>Eisflamme schrieb:</p>
<blockquote>
<p>Eigentlich ist doch jede Referenz konstant, oder?</p>
</blockquote>
<p>Jain. Eine Referenz kann immer nur auf das Objekt zeigen, dem sie bei der Inititalisierung zugewiesen wurde, aber du kannst eine Referenz halt nicht const qualifizieren. <a href="http://ideone.com/z692u" rel="nofollow">http://ideone.com/z692u</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2190115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190115</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Fri, 09 Mar 2012 13:53:22 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Fri, 09 Mar 2012 13:55:02 GMT]]></title><description><![CDATA[<p>Okay, aber da wir ja const als Schlüsselwort und konstant als Adjektiv voneinander entkoppelt haben, stimmt meine Aussage ja so wie ich es meine. <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/2190116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190116</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Fri, 09 Mar 2012 13:55:02 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Fri, 09 Mar 2012 13:56:03 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>cooky451 schrieb:</p>
<blockquote>
<p>Da haben sie recht, aber das wird der Compiler wohl optimieren. Was halt daran liegt, dass beide Operationen auch wirklich äquivalent sind.</p>
</blockquote>
<p>Wasn Schwachsinn. Soll Prozessoren geben, bei dem eine Multiplikation schneller ist.</p>
</blockquote>
<p>Quark, mal wieder, leider.</p>
<p>Optimieren heißt nicht, alle *2 pauschal durch &lt;&lt;1 zu ersetzen, sondern die schnellere Anweisung zu wählen.</p>
<p>Was ist mir dir heute eigentlich wieder los? Du bettelst geradezu darum, über das Wochenende (mal wieder) eine Pause verpasst zu bekommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2190117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190117</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 09 Mar 2012 13:56:03 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Fri, 09 Mar 2012 13:56:16 GMT]]></title><description><![CDATA[<p>Wenn man mal von bösen Hacks absieht, ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2190118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190118</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 09 Mar 2012 13:56:16 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Fri, 09 Mar 2012 14:02:43 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Optimieren heißt nicht, alle *2 pauschal durch &lt;&lt;1 zu ersetzen, sondern die schnellere Anweisung zu wählen.</p>
</blockquote>
<p>Was du nicht sagst. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
Mir ging es auch eher um &quot;Da haben sie recht&quot; und &quot;Was halt daran liegt, dass beide Operationen auch wirklich äquivalent sind.&quot;.</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Was ist mir dir heute eigentlich wieder los? Du bettelst geradezu darum, über das Wochenende (mal wieder) eine Pause verpasst zu bekommen.</p>
</blockquote>
<p>Ahja. Dann leg mal los, wenns dir so viel Spaß macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2190121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190121</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 09 Mar 2012 14:02:43 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Sat, 10 Mar 2012 11:53:16 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Eisflamme schrieb:</p>
<blockquote>
<p>Eigentlich ist doch jede Referenz konstant, oder?</p>
</blockquote>
<p>Jain. Eine Referenz kann immer nur auf das Objekt zeigen, dem sie bei der Inititalisierung zugewiesen wurde, aber du kannst eine Referenz halt nicht const qualifizieren. <a href="http://ideone.com/z692u" rel="nofollow">http://ideone.com/z692u</a></p>
</blockquote>
<p>in der form</p>
<pre><code class="language-cpp">T const &amp;
</code></pre>
<p>ist die lesart einfach verkehrt: referenz auf const T.<br />
da aber eine referenz immer auf ein objekt zeigt und immer auf das gleiche, ist es nicht unsinnig, den begriff &quot;konstante referenz&quot; als abkürzung für referenz auf const zu verwenden, was ja auch &quot;const-reference&quot; macht. wenn man allerdings nicht weiß, dass es</p>
<pre><code class="language-cpp">T &amp; const
</code></pre>
<p>nicht gibt, würde es tatsächlich verwirrung machen, von const-reference oder konstanter referenz zu sprechen. referenz auf const ist in diesem fall besser, ansonsten egal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2190393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190393</guid><dc:creator><![CDATA[oops]]></dc:creator><pubDate>Sat, 10 Mar 2012 11:53:16 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Sat, 10 Mar 2012 12:11:01 GMT]]></title><description><![CDATA[<p>oops schrieb:</p>
<blockquote>
<p>da aber eine referenz immer auf ein objekt zeigt und immer auf das gleiche, ist es nicht unsinnig, den begriff &quot;konstante referenz&quot; als abkürzung für referenz auf const zu verwenden, was ja auch &quot;const-reference&quot; macht.</p>
</blockquote>
<p>Doch, &quot;konstante Referenz&quot; ist immer unsinnig.</p>
<p>&quot;Const reference&quot; hingegen ist völlig angebracht, sogar der C++-Standard verwendet diesen Begriff. Und er bedeutet auch nicht &quot;konstante Referenz&quot;, das wäre nämlich &quot;constant reference&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2190399</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190399</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 10 Mar 2012 12:11:01 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Sat, 10 Mar 2012 13:44:59 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>&quot;Const reference&quot; hingegen ist völlig angebracht, sogar der C++-Standard verwendet diesen Begriff. Und er bedeutet auch nicht &quot;konstante Referenz&quot;, das wäre nämlich &quot;constant reference&quot;.</p>
</blockquote>
<p>&quot;constant reference&quot; kann man aber genauso mit konstantenreferenz übersetzen, was genau dasselbe bedeutet, wie &quot;const-reference&quot;, nämlich eine referenz auf eine konstante.</p>
<p>ich stimme dir schon zu, dass &quot;konstante referenz&quot; nicht eindeutig ist, eine konstanten-referenz wäre der eindeutige begriff; aber weil eine referenz immer auf das gleiche objekt verweist (und für diese definition keine wortspiele braucht), ist es absolut legitim, zu sagen &quot;konstante referenz&quot;, wenn damit eine konstantenreferenz gemeint ist, weil aus dem kontext eindeutig klar wird, was gemeint ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2190434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190434</guid><dc:creator><![CDATA[oops]]></dc:creator><pubDate>Sat, 10 Mar 2012 13:44:59 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Sat, 10 Mar 2012 14:04:49 GMT]]></title><description><![CDATA[<p>Schön, dass du mit &quot;Konstantenreferenz&quot; noch einen weiteren Begriff einführst, den erst recht niemand versteht :p</p>
<p>Wie gesagt, &quot;const reference&quot; ist der offizielle Ausdruck. Auf deutsch würde ich ihn mit &quot;Const-Referenz&quot; übersetzen. Er bezieht sich auf das Schlüsselwort <code>const</code> , was im Deutschen ebenfalls <code>const</code> ist. Es gibt sogar die Typdefinition <code>const_reference</code> bei Containern, die normalerweise <code>const T&amp;</code> entspricht. Genauso wie bei <code>const_iterator</code> , das ist ja auch kein konstanter Iterator. Gleiches gilt für <code>const_pointer</code> . Wieso sollte es bei Referenzen plötzlich anders sein?</p>
<p>&quot;Konstante Referenz&quot; ist gerade für Anfänger unnötig verwirrend, weil der wörtliche Begriff 1. unnötige Information enthält (Referenzen sind immer konstant), 2. wichtige Information weglässt (ist das referenzierte Objekt konstant?) und 3. den Eindruck macht, dass es auch nicht-konstante Referenzen gäbe, was einfach nur falsch ist.</p>
<p>Während es sogar kürzer ist, &quot;const reference&quot; oder &quot;Const-Referenz&quot; zu schreiben, entspricht es auch dem im C++-Standard verwendeten Begriff und ist eindeutig. Also einigen wir uns doch bitte darauf <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/2190437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190437</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 10 Mar 2012 14:04:49 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Sat, 10 Mar 2012 14:19:12 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Während es sogar kürzer ist, &quot;const reference&quot; oder &quot;Const-Referenz&quot; zu schreiben, entspricht es auch dem im C++-Standard verwendeten Begriff und ist eindeutig. Also einigen wir uns doch bitte darauf <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>gut, ich spreche immer gut auf das argument der kürze an <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/2190442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190442</guid><dc:creator><![CDATA[oops]]></dc:creator><pubDate>Sat, 10 Mar 2012 14:19:12 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Sat, 10 Mar 2012 14:50:21 GMT]]></title><description><![CDATA[<p>oops schrieb:</p>
<blockquote>
<p>in der form</p>
<pre><code class="language-cpp">T const &amp;
</code></pre>
<p>ist die lesart einfach verkehrt: referenz auf const T.</p>
</blockquote>
<p>Wenn man Typen von Rechts nach Links liest, ist das absolut legitim und korrekt so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2190447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190447</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sat, 10 Mar 2012 14:50:21 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Sat, 10 Mar 2012 15:03:17 GMT]]></title><description><![CDATA[<p>das &quot;verkehrt&quot; war nicht abwertend gemeint. das sollte einfach heißen, dass man, wenn man das so schreibt, konsistenter lesen kann (nämlich von rechts nach links (und war eine anspielung auf den anderen thread, wo es auch genau darum geht) - wenn man schreibt</p>
<pre><code class="language-cpp">const T &amp;
</code></pre>
<p>ist das aber sicher &quot;üblicher&quot; (iSv mehr leute machen das so) und man kann es immer noch von rechts nach links lesen: referenz auf eine T-konstante. (&quot;reference to a T-typed constant&quot;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2190451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190451</guid><dc:creator><![CDATA[oops]]></dc:creator><pubDate>Sat, 10 Mar 2012 15:03:17 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Mon, 12 Mar 2012 10:46:16 GMT]]></title><description><![CDATA[<p>oops schrieb:</p>
<blockquote>
<p>ist das aber sicher &quot;üblicher&quot; (iSv mehr leute machen das so)</p>
</blockquote>
<p>Kannst du das belegen? Sprich: Statistiken über nennenswerte Projekte, die belegen, dass die &quot;const T&amp;&quot; Schreibweise häufiger vorkommt als die &quot;T const&amp;&quot;?<br />
Mal abgesehen vom nicht vorhandenen Komparativ von &quot;üblich&quot; sollte so eine Statistik im Sinne von &quot;üblich&quot; natürlich eine signifikanten Unterschied zeigen, 55% zu 45% wäre z.B nicht wirklich signifikant.<br />
So oder so sollte man als Entwickler beide Schreibweisen lesen können, eben weil sie beide begründet sind und beide vorkommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2190879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190879</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 12 Mar 2012 10:46:16 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Mon, 12 Mar 2012 18:55:09 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>beide begründet</p>
</blockquote>
<p>Ich hätte dann gerne eine Begründung für &quot;const T&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2191005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191005</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 12 Mar 2012 18:55:09 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter als Referenz übergeben unnötig? on Tue, 13 Mar 2012 00:36:36 GMT]]></title><description><![CDATA[<p>Nexus: Ich finde den Begriff Konstantenreferenz eigentlich sehr gut, denn er füllt genau die Lücke, die es ja anscheinend gegeben hat.<br />
T const&amp; ist ja nichts anderes als eine Referenz auf eine Konstante <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>Konstante Referenz ist semantisch nicht sinnvoll, dem stimme ich zu.</p>
<p>pumuckl: Diese Methode zu entscheiden, was besser ist, finde ich nicht besonders sinnvoll, da sie auf eine positive Rückkopplung hinausläuft.<br />
Zumindest mich ärgert es, dass oftmals die bekannteste, aber nicht die beste, Lösung genommen wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2191052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191052</guid><dc:creator><![CDATA[Fast2_unreg]]></dc:creator><pubDate>Tue, 13 Mar 2012 00:36:36 GMT</pubDate></item></channel></rss>