<?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[Value by reference]]></title><description><![CDATA[<p>hallo,</p>
<p>ich habe eine klasse mit vielen set-methoden und hab mir überlegt überall die parameter als referenz zu machen. gibt es was gegen:</p>
<pre><code class="language-cpp">set_timeout( const unsigned int &amp;timeout )
</code></pre>
<p>einzuwenden? warum macht man nicht überall diese referenzen hin ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/205936/value-by-reference</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 00:19:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/205936.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 19 Feb 2008 15:50:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Value by reference on Tue, 19 Feb 2008 15:50:48 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>ich habe eine klasse mit vielen set-methoden und hab mir überlegt überall die parameter als referenz zu machen. gibt es was gegen:</p>
<pre><code class="language-cpp">set_timeout( const unsigned int &amp;timeout )
</code></pre>
<p>einzuwenden? warum macht man nicht überall diese referenzen hin ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458952</guid><dc:creator><![CDATA[&amp;amp;-operator]]></dc:creator><pubDate>Tue, 19 Feb 2008 15:50:48 GMT</pubDate></item><item><title><![CDATA[Reply to Value by reference on Tue, 19 Feb 2008 15:55:06 GMT]]></title><description><![CDATA[<p>Sinnlos bei primitiven Datentypen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458959</guid><dc:creator><![CDATA[Primitivling]]></dc:creator><pubDate>Tue, 19 Feb 2008 15:55:06 GMT</pubDate></item><item><title><![CDATA[Reply to Value by reference on Tue, 19 Feb 2008 15:59:01 GMT]]></title><description><![CDATA[<p>warum? wenn er es als Referenz übergeben will?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458963</guid><dc:creator><![CDATA[Basingstoke]]></dc:creator><pubDate>Tue, 19 Feb 2008 15:59:01 GMT</pubDate></item><item><title><![CDATA[Reply to Value by reference on Tue, 19 Feb 2008 16:05:21 GMT]]></title><description><![CDATA[<p>Die Größe der Variable die kopiert wird und die der Referenz ist identisch. Daher kein Vorteil.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458969</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458969</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Tue, 19 Feb 2008 16:05:21 GMT</pubDate></item><item><title><![CDATA[Reply to Value by reference on Tue, 19 Feb 2008 16:08:00 GMT]]></title><description><![CDATA[<p>Basingstoke schrieb:</p>
<blockquote>
<p>warum? wenn er es als Referenz übergeben will?</p>
</blockquote>
<p>Da steht ein const davor =&gt; sinnlos</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458971</guid><dc:creator><![CDATA[Sinner]]></dc:creator><pubDate>Tue, 19 Feb 2008 16:08:00 GMT</pubDate></item><item><title><![CDATA[Reply to Value by reference on Tue, 19 Feb 2008 16:14:22 GMT]]></title><description><![CDATA[<p>Fellhuhn schrieb:</p>
<blockquote>
<p>Die Größe der Variable die kopiert wird und die der Referenz ist identisch. Daher kein Vorteil.</p>
</blockquote>
<p>Wer sagt das? Woher willst du wissen, das der Compiler Referenzen als Pointer implementiert? Ist das nicht eher Compiler-abhängig? Und somit eine Pauschalaussage nicht wirklich richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458974</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 19 Feb 2008 16:14:22 GMT</pubDate></item><item><title><![CDATA[Reply to Value by reference on Tue, 19 Feb 2008 16:23:42 GMT]]></title><description><![CDATA[<p>Unabhängig davon wie es unter der Haube aussieht, wird in eigentlich jeden aktuellen Quellen (auch grade von den C++ Gurus ;p) das man primitive Datentypen &quot;By Value&quot; und Objekte &quot;by const Referenz&quot; übergeben sollte. Daher würde ich mich erst einmal daran halten, auch wenn mir Bewusst ist das sich Regeln mit der Zeit ändern können.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458979</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 19 Feb 2008 16:23:42 GMT</pubDate></item><item><title><![CDATA[Reply to Value by reference on Tue, 19 Feb 2008 16:40:20 GMT]]></title><description><![CDATA[<p>Sinner schrieb:</p>
<blockquote>
<p>Basingstoke schrieb:</p>
<blockquote>
<p>warum? wenn er es als Referenz übergeben will?</p>
</blockquote>
<p>Da steht ein const davor =&gt; sinnlos</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="😕"
    /> ähh nö - wieso ?<br />
Der Unterschied zwischen einer const- und einer non-const-Referenz sollte doch wohl auf der Hand liegen, oder ?<br />
Selbst bei einem Call by Value kann ein const eine &quot;Programmierhilfe&quot; sein, wenn man sicherstellen will, dass man bei der Implementation nur const-Funktionen auf die Kopie anwenden will ... (MUSS man nicht, mache ich auch eher selten, ist aber nicht per definitionem sinnlos - spätestens bei templates ist das gar nicht so dumm)</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458987</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 19 Feb 2008 16:40:20 GMT</pubDate></item><item><title><![CDATA[Reply to Value by reference on Tue, 19 Feb 2008 16:47:20 GMT]]></title><description><![CDATA[<p>er meint sinnlos, weil man es dann nicht wirklich als Referenz verwenden will, sondern nur den Geschwindigkeitsvorteil haben will.</p>
<p>war wohl auf die ersten beiden Antworten bezogen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458993</guid><dc:creator><![CDATA[mhm]]></dc:creator><pubDate>Tue, 19 Feb 2008 16:47:20 GMT</pubDate></item><item><title><![CDATA[Reply to Value by reference on Tue, 19 Feb 2008 18:09:44 GMT]]></title><description><![CDATA[<p>mhm schrieb:</p>
<blockquote>
<p>er meint sinnlos, weil man es dann nicht wirklich als Referenz verwenden will, sondern nur den Geschwindigkeitsvorteil haben will.</p>
<p>war wohl auf die ersten beiden Antworten bezogen</p>
</blockquote>
<p>richtig</p>
<p>Und so Aussagen &quot;woher wollt ihr wissen, dass Referenzen als Pointer implementier sind?&quot; haben auch maximal theoretischen Wert. Jeder mir bekannte Compiler implementiert Referenzen durch Pointer (auch irgendwie naheliegend), also macht es keinen Sinn über irgendwelche theoretischen Möglichkeiten zu reden.</p>
<p>Ergo: primitive Datentypen =&gt; Value<br />
sonst =&gt; Referenz (wenns geht)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1459036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1459036</guid><dc:creator><![CDATA[Sinner]]></dc:creator><pubDate>Tue, 19 Feb 2008 18:09:44 GMT</pubDate></item><item><title><![CDATA[Reply to Value by reference on Wed, 20 Feb 2008 08:26:14 GMT]]></title><description><![CDATA[<p>Konstante Referenzen kann man auch verändern, dazu ist ja const_cast da. Also schon ein Unterschied. <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/1459241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1459241</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 20 Feb 2008 08:26:14 GMT</pubDate></item><item><title><![CDATA[Reply to Value by reference on Wed, 20 Feb 2008 08:27:34 GMT]]></title><description><![CDATA[<p>Sinner schrieb:</p>
<blockquote>
<p>mhm schrieb:</p>
<blockquote>
<p>er meint sinnlos, weil man es dann nicht wirklich als Referenz verwenden will, ...</p>
</blockquote>
<p>richtig...</p>
</blockquote>
<p>Aha !<br />
Merke: Wenn man schreibt, was man meint, wird man weniger mißverstanden.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1459243</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1459243</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 20 Feb 2008 08:27:34 GMT</pubDate></item><item><title><![CDATA[Reply to Value by reference on Wed, 20 Feb 2008 09:48:29 GMT]]></title><description><![CDATA[<p>Fellhuhn schrieb:</p>
<blockquote>
<p>Konstante Referenzen kann man auch verändern, dazu ist ja const_cast da. Also schon ein Unterschied. <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>
</blockquote>
<p>Nein, dafür ist const_cast eben nicht da. Konstante Werte sollte man niemals ändern. const_cast hat vor allem die Bewandnis das man allte Schnittstellen (z.B. externe) verwenden kann wo - obwohl keine Änderung erfolgt - keine const-Deklaration statt gefunden hat.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1459285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1459285</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 20 Feb 2008 09:48:29 GMT</pubDate></item><item><title><![CDATA[Reply to Value by reference on Wed, 20 Feb 2008 09:55:21 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>... Konstante Werte sollte man niemals ändern....</p>
</blockquote>
<p>Richtig. Aber man kann. Und daher ist es ein Unterschied. Habe ja nicht gesagt das man es soll. <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/1459289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1459289</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 20 Feb 2008 09:55:21 GMT</pubDate></item><item><title><![CDATA[Reply to Value by reference on Wed, 20 Feb 2008 12:08:27 GMT]]></title><description><![CDATA[<p>Fellhuhn schrieb:</p>
<blockquote>
<p>...Aber man kann....</p>
</blockquote>
<p>... und springt damit über die Grenzen des Standards hinaus in den weiten Raum &quot;undefiniertes Verhalten&quot;.<br />
Mit Deiner Formulierung suggerierst Du aber Anderes.</p>
<p>Genauso könnte ich sagen: &quot;Pi kann man als 2 definieren&quot;.<br />
Da gilt auch: &quot;Ja, man kann&quot;<br />
.. aber eben auch: &quot;Dann sollte man sich aber nicht darauf verlassen, dass alles Andere noch funktioniert/gilt&quot;</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1459373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1459373</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 20 Feb 2008 12:08:27 GMT</pubDate></item><item><title><![CDATA[Reply to Value by reference on Wed, 20 Feb 2008 12:17:23 GMT]]></title><description><![CDATA[<p>Undefiniert? Das ist der Sinn von const_cast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1459375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1459375</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 20 Feb 2008 12:17:23 GMT</pubDate></item><item><title><![CDATA[Reply to Value by reference on Wed, 20 Feb 2008 12:29:29 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void f(int const&amp; fi);

int main() {
   const int i = 3;
   f(i);
   cout &lt;&lt; i;
   return 0;
}

void f(int const&amp; fi) {
   int&amp; i = const_cast&lt;int&gt;(fi);
   i++;
}
</code></pre>
<p>undefiniert eben.</p>
<p>Du hast geschrieben (in einer allgemeinen Diskussion über Schnittstellen):</p>
<p>Fellhuhn schrieb:</p>
<blockquote>
<p>Konstante Referenzen kann man auch verändern, dazu ist ja const_cast da....</p>
</blockquote>
<p>... und das stimmt einfach nicht.<br />
Stattdessen hat asc es gut auf den Punkt gebracht:</p>
<p>asc schrieb:</p>
<blockquote>
<p>...<br />
Nein, dafür ist const_cast eben nicht da. Konstante Werte sollte man niemals ändern. const_cast hat vor allem die Bewandnis das man allte Schnittstellen (z.B. externe) verwenden kann wo - obwohl keine Änderung erfolgt - keine const-Deklaration statt gefunden hat....</p>
</blockquote>
<p>... und dieses &quot;sollte man niemals ändern&quot; ist nicht ein netter Design-Tipp unter Freunden, sondern eine andere Formulierung von &quot;Ergebnis ist undefiniert&quot;.<br />
Manchmal ist &quot;undefiniert&quot; das geringere Übel und da ist const_cast das Mittel der Wahl, aber es ist nicht das generelle Mittel, um &quot;... konstante Referenzen zu ändern ...&quot;.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1459378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1459378</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 20 Feb 2008 12:29:29 GMT</pubDate></item><item><title><![CDATA[Reply to Value by reference on Wed, 20 Feb 2008 12:37:51 GMT]]></title><description><![CDATA[<p>Das ist kein Stück undefiniert. &quot;Definierter&quot; geht es gar nicht. Es mag in deinem Programm zu komischen Ergebnissen führen, die aber komplett dem Standard entsprechen.<br />
Das es absolut schlechter Stil ist, ist ganz was anderes. Aber zu behauptet eine konstante Referenz auf einen primitiven Datentyp und ein call by Value wäre identisch, ist absolut falsch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1459385</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1459385</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 20 Feb 2008 12:37:51 GMT</pubDate></item><item><title><![CDATA[Reply to Value by reference on Wed, 20 Feb 2008 12:45:14 GMT]]></title><description><![CDATA[<p>Fellhuhn schrieb:</p>
<blockquote>
<p>Das ist kein Stück undefiniert.</p>
</blockquote>
<p>Doch, das ist undefiniert. 'const_cast' darf lt. Standard nur auf Werte angewandt werden, die nicht 'const' angelegt worden sind (ich bin zu faul, den genauen Wortlaut herauszusuchen). Wenn man 'i' also non-const deklariert hätte, wäre der Code wohldefiniert, sonst nicht. (Zumindest ist es bei Zeigern so, ob das auch für Referenzen gilt, weiß ich nicht.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1459388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1459388</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Wed, 20 Feb 2008 12:45:14 GMT</pubDate></item><item><title><![CDATA[Reply to Value by reference on Wed, 20 Feb 2008 12:47:05 GMT]]></title><description><![CDATA[<p>Fellhuhn schrieb:</p>
<blockquote>
<p>Das ist kein Stück undefiniert. &quot;Definierter&quot; geht es gar nicht.</p>
</blockquote>
<p>Nein. Es ist undefiniert. Das &quot;entconsten&quot; einer konstanten Variable (Beachte: Das <strong>Ursprungsobjekt</strong> ist konstant!) führt zu undefiniertem Verhalten. Punkt.</p>
<p>Was Du wahrscheinlich meinst ist:</p>
<pre><code class="language-cpp">void f(int const&amp; fi);

int main() {
   int i = 3; // KEIN const
   f(i);
   cout &lt;&lt; i;
   return 0;
}

void f(int const&amp; fi) {
   int&amp; i = const_cast&lt;int&gt;(fi);
   i++;
}
</code></pre>
<p>BTW: Beim cast fehlt glaube ich ein &amp; in den &lt;&gt;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1459390</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1459390</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 20 Feb 2008 12:47:05 GMT</pubDate></item><item><title><![CDATA[Reply to Value by reference on Wed, 20 Feb 2008 12:51:01 GMT]]></title><description><![CDATA[<p>Ah, okay, sorry, das habe ich übersehen. Dann hast natürlich recht. Den Fall hatte ich komplett übersehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1459392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1459392</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 20 Feb 2008 12:51:01 GMT</pubDate></item></channel></rss>