<?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[wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ?]]></title><description><![CDATA[<p>Hi,</p>
<p>ich würde gerne wissen, wieso man Konstanten mit dem<br />
Schlüsselwort 'const' erzeugen soll, wenn man im<br />
Prinzip auch normale Variablen erzeugen kann, die man<br />
in seinem Quellcode eh nicht ändern lässt ?</p>
<p>Wenn ich z.B. 'int i = 3' anstatt 'const int i = 3'<br />
schreiben würde, was macht es dann einen Unterschied,<br />
wenn ich den Wert in 'i' eh nicht ändern lasse ?</p>
<p>Wofür das Schlüsselwort 'const' ?</p>
<p>VIELEN DANK im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/117258/wieso-konstanten-mit-quot-const-quot-erzeugen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 22:03:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/117258.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 04 Aug 2005 18:43:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Thu, 04 Aug 2005 18:43:30 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich würde gerne wissen, wieso man Konstanten mit dem<br />
Schlüsselwort 'const' erzeugen soll, wenn man im<br />
Prinzip auch normale Variablen erzeugen kann, die man<br />
in seinem Quellcode eh nicht ändern lässt ?</p>
<p>Wenn ich z.B. 'int i = 3' anstatt 'const int i = 3'<br />
schreiben würde, was macht es dann einen Unterschied,<br />
wenn ich den Wert in 'i' eh nicht ändern lasse ?</p>
<p>Wofür das Schlüsselwort 'const' ?</p>
<p>VIELEN DANK im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/845976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/845976</guid><dc:creator><![CDATA[Consideration]]></dc:creator><pubDate>Thu, 04 Aug 2005 18:43:30 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Thu, 04 Aug 2005 18:50:58 GMT]]></title><description><![CDATA[<p>Wenn Du eine Bibliothek oder ein Programm schreibst und Dich darauf verlassen musst, dass ein Wert konstant bleibt, dann kann Dir der Compiler dabei helfen, indem er das erfolgreiche Übersetzen unterlässt, sobald jemand versucht diesen Wert zu ändern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/845979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/845979</guid><dc:creator><![CDATA[nillable]]></dc:creator><pubDate>Thu, 04 Aug 2005 18:50:58 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Thu, 04 Aug 2005 18:51:45 GMT]]></title><description><![CDATA[<p>Damit vermeidet man auch Fehler so dass keiner den Wert aus Versehen ändert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/845982</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/845982</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Thu, 04 Aug 2005 18:51:45 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Thu, 04 Aug 2005 19:21:43 GMT]]></title><description><![CDATA[<p>für mich erscheinen konstanten auch logischer.<br />
man denke an die zahl pi.<br />
die is immer konstant, egal was passiert.<br />
pi ist immer 3.14xxxx<br />
kommt halt darauf an, wie viele zahlen man nimmt.</p>
<p>wiso eine konstante zahl, wie der name schon sagt, nicht auch daraus eine konstante machen? <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/846005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846005</guid><dc:creator><![CDATA[Green Snake]]></dc:creator><pubDate>Thu, 04 Aug 2005 19:21:43 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Thu, 04 Aug 2005 20:00:49 GMT]]></title><description><![CDATA[<p>Auch kann der compiler mit einer konstanten variable viele lustige sachen machen, zb vorberechnen oder rausoptimieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846030</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Thu, 04 Aug 2005 20:00:49 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Fri, 05 Aug 2005 07:44:50 GMT]]></title><description><![CDATA[<p>oder denke an</p>
<pre><code class="language-cpp">class a_class{
  const static int var = 1001;
  ...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/846228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846228</guid><dc:creator><![CDATA[nirsaja]]></dc:creator><pubDate>Fri, 05 Aug 2005 07:44:50 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Fri, 05 Aug 2005 09:18:52 GMT]]></title><description><![CDATA[<blockquote>
<p>Titel: wieso Konstanten mit &quot;const&quot; erzeugen ?</p>
</blockquote>
<p>weil es nur mit &quot;const&quot; geht. :p</p>
<p>EDIT: defines sind ja nicht wirklich konstanten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846309</guid><dc:creator><![CDATA[geloescht]]></dc:creator><pubDate>Fri, 05 Aug 2005 09:18:52 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Fri, 05 Aug 2005 09:37:45 GMT]]></title><description><![CDATA[<p>man kann aber constanten auch verändern und der compiler ( egal welcher ) kann daran nichts ändern.</p>
<p>frage an die profis:</p>
<p>Wie macht man das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846319</guid><dc:creator><![CDATA[const]]></dc:creator><pubDate>Fri, 05 Aug 2005 09:37:45 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Fri, 05 Aug 2005 09:41:42 GMT]]></title><description><![CDATA[<p>Mit Pointern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846322</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846322</guid><dc:creator><![CDATA[Reyx]]></dc:creator><pubDate>Fri, 05 Aug 2005 09:41:42 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Fri, 05 Aug 2005 09:51:44 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">const float f=3.14;
float	**ppf;
*ppf = &amp;f;
**ppf = 5.25;
</code></pre>
<p>Also mein Compiler meckert da, so einfach gehts nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846335</guid><dc:creator><![CDATA[electron_1]]></dc:creator><pubDate>Fri, 05 Aug 2005 09:51:44 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Fri, 05 Aug 2005 10:16:05 GMT]]></title><description><![CDATA[<p>otze schrieb:</p>
<blockquote>
<p>Auch kann der compiler mit einer konstanten variable viele lustige sachen machen, zb vorberechnen oder rausoptimieren.</p>
</blockquote>
<p>Kann man so nicht ganz pauschal sagen. Was Du wahrscheinlich meinst, kann und macht er auch ohne const. Aliasing ist das größte Problem dabei, wo auch kein const weiterhilft.</p>
<p>Das hier ist lesenswert und erklärt auch, wann das was Otze geschrieben hat, greift:<br />
<a href="http://www.gotw.ca/gotw/081.htm" rel="nofollow">http://www.gotw.ca/gotw/081.htm</a></p>
<p>@electron_1: müsste dann so heißen:</p>
<pre><code class="language-cpp">const float f=3.14;
const float **ppf;
*ppf = &amp;f;
**ppf = 5.25; /// geht net, weil der float auf den gezeigt wird konstant ist
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/846337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846337</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Fri, 05 Aug 2005 10:16:05 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Fri, 05 Aug 2005 09:56:43 GMT]]></title><description><![CDATA[<p>Mit const_cast ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846339</guid><dc:creator><![CDATA[asdrubael]]></dc:creator><pubDate>Fri, 05 Aug 2005 09:56:43 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Fri, 05 Aug 2005 10:03:21 GMT]]></title><description><![CDATA[<p>Mal so in der Art versucht?</p>
<pre><code class="language-cpp">const float f = 2.0f;
ShowMessage(f);
float *pf = const_cast&lt;float*&gt;(&amp;f);
*pf = 3.0f;
ShowMessage(f);
</code></pre>
<p>Allerdings musst du da höllisch aufpassen, dein Programm wird dir, wenn du nicht genau weißt, was du tust, bei einer Veränderung einer konstante mit Sicherheit eine AccessViolation ausspucken!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846346</guid><dc:creator><![CDATA[Reyx]]></dc:creator><pubDate>Fri, 05 Aug 2005 10:03:21 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Fri, 05 Aug 2005 10:01:57 GMT]]></title><description><![CDATA[<p>Und ich mein immer noch</p>
<pre><code class="language-cpp">const float f = 2.0f;
float *pf = const_cast&lt;float*&gt;(&amp;f);
*pf = 3.0f;
</code></pre>
<p>Habs aber nich ausprobiert. Und wenn kann dir das OS nen Strich durch die Rechnung machen, wenn f in nem nur lesbaren RAM Bereich liegt.</p>
<p>EDIT:<br />
Fast dasselbe und nur 3 sec Unterschied <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/846347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846347</guid><dc:creator><![CDATA[YASC]]></dc:creator><pubDate>Fri, 05 Aug 2005 10:01:57 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Fri, 05 Aug 2005 10:03:32 GMT]]></title><description><![CDATA[<p>jop.</p>
<pre><code class="language-cpp">const float f=3.14;
const float *pcf = &amp;f;
float *pvf = const_cast&lt;float*&gt;(pcf)
*pvf = 1.41
</code></pre>
<p>müsste funktioniern</p>
<p>/edit: argl. bin zu lahm heute.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846349</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 05 Aug 2005 10:03:32 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Fri, 05 Aug 2005 10:13:13 GMT]]></title><description><![CDATA[<p>Mit const sollte man aufpassen (abgesehen davon, dass man von Literalen das const nicht entfernen darf). Dieser Code ist ist kein legales C++:</p>
<pre><code class="language-cpp">int a = 10;
{
  const int&amp; b = a;
  a = 5; // verboten solange b lebt!
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/846366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846366</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Fri, 05 Aug 2005 10:13:13 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Fri, 05 Aug 2005 10:19:25 GMT]]></title><description><![CDATA[<p>kann man überhaupt eine const reference auf eine non-const variable beziehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846373</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 05 Aug 2005 10:19:25 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Fri, 05 Aug 2005 10:29:02 GMT]]></title><description><![CDATA[<p>ja klar. macht man sogar häufig. aber ich verstehe 7H3 N4C3Rs code trotzdem nicht <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="🤡"
    /><br />
geloescht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846381</guid><dc:creator><![CDATA[geloescht]]></dc:creator><pubDate>Fri, 05 Aug 2005 10:29:02 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Fri, 05 Aug 2005 10:37:27 GMT]]></title><description><![CDATA[<p>Also was hier wieder fuer ne kriminelle energie zu tage kommt <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>Schaut euch mal an, wo euer compiler die const und nichtconst Variablen ablegt ...</p>
<pre><code>int Testfunktion()
{
    int test1 = 0;
    const int test2 = 5;

}
</code></pre>
<p>wenn ihr nen einigermasen vernuenftigen compiler habt, wird test2 immer an der selben speichgeradresse stehen, egal wo und wie die funktion aufgerufen wird ... und sie wird hoechstwahrscheinlich auch im constanten speicherbereich abgelegt werden ...</p>
<p>bei</p>
<p>const int test2 = test1;</p>
<p>sieht die sache wieder etwas anders aus ...<br />
dort nutzt man das const wirklich nur, um vor sich selbst / vor den usern zu schuetzen ....<br />
wenn man bibliotheken schreibt wird man es lieben lernen, sonst klingelt eh aller 5 min das telefon wegens nachfragen ... weil fehler auftreten die man nie vorraussehen kann, da ist das const extenziell wichtig ...</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846384</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Fri, 05 Aug 2005 10:37:27 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Fri, 05 Aug 2005 10:34:58 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>kann man überhaupt eine const reference auf eine non-const variable beziehen?</p>
</blockquote>
<p>Strenggenommen gibt es keine const reference. Eine Referenz ist per Definition const in dem Sinne, dass sie einmal gebunden, nicht verändert werden kann. Eine Referenz-auf-const kann aber natürlich problemlos an eine nicht-konstante Variable gebunden werden.</p>
<p>Eure Beispiele mit den const_casts erzeugen übrigens alle undefiniertes Verhalten und funktionieren somit nicht. Dem Compiler das Maul zu verbieten ist nicht äquivalent zu &quot;funktioniert&quot;.</p>
<p>7H3 N4C3R schrieb:</p>
<blockquote>
<p>Dieser Code ist ist kein legales C++:</p>
<pre><code class="language-cpp">int a = 10;
{
  const int&amp; b = a;
  a = 5; // verboten solange b lebt!
}
</code></pre>
</blockquote>
<p>Das wäre mir neu. Chapter und Verse, bitte.</p>
<p>Imo ist das einfach nur ein typisches Beispiel für aliasing und zeigt den Unterschied zwischen einer Referenz-auf-const und einer Konstanten. Ersteres heißt nur, dass du über die Referenz (oder den Zeiger) das referenzierte Objekt nicht ändern darfst. Es heißt aber nicht, dass sich das referenzierte Objekt garantiert nicht ändert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846389</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846389</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Fri, 05 Aug 2005 10:34:58 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Fri, 05 Aug 2005 11:30:14 GMT]]></title><description><![CDATA[<p>7H3 N4C3R schrieb:</p>
<blockquote>
<p>otze schrieb:</p>
<blockquote>
<p>Auch kann der compiler mit einer konstanten variable viele lustige sachen machen, zb vorberechnen oder rausoptimieren.</p>
</blockquote>
<p>Kann man so nicht ganz pauschal sagen. Was Du wahrscheinlich meinst, kann und macht er auch ohne const. Aliasing ist das größte Problem dabei, wo auch kein const weiterhilft.</p>
</blockquote>
<p>nur mit const kann der compiler es einfacher machen, zumindest bei pod typen, denn da sieht er, dass die ganze variable nicht mehr geändert werden _kann_(zb durch mutable/volatile), und kann viel einfacher damit arbeiten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846444</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Fri, 05 Aug 2005 11:30:14 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Fri, 05 Aug 2005 11:48:09 GMT]]></title><description><![CDATA[<p>HumeSikkins schrieb:</p>
<blockquote>
<p>Das wäre mir neu. Chapter und Verse, bitte.</p>
</blockquote>
<p>Hmm... da erwischt du mich auf dem falschen Fuß. Ich habe momentan keine Ahnung, wo ich das herhatte, ich glaube aber aus dem Standard oder eines von Sutters Büchern. Von daher habe ich dieser Behauptung auch geglaubt. Ich meine, das damit zutun, dass es eine const T&amp; ist. Für diese kann eine temporäre Variable angelegt werden, sofern T nicht const oder vom Typ T ist. Ändert man nun das a in meinem Beispiel, so wäre die temporäre Variable, die b referenziert, nicht mehr synchron mit der eigentlichen.</p>
<p>Besser verständlich, macht es wohl dieses Beispiel. Ich würde jetzt nicht meine Hand ins Feuer legen, dass mein letztes 100% richtig ist, da mir die Quelle fehlt.</p>
<pre><code class="language-cpp">int i = 5;
const double&amp; d = i; // ist okay, es wird ein temporärer double angelegt, der solange lebt wie d
i = 6; // was nun?
</code></pre>
<p>Das steht auf jeden Fall im Struppi beschrieben im Kapitel 5.5 (Seite 106 in der 3. Auflage).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846462</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Fri, 05 Aug 2005 11:48:09 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Fri, 05 Aug 2005 12:40:08 GMT]]></title><description><![CDATA[<p>7H3 N4C3R schrieb:</p>
<blockquote>
<p>HumeSikkins schrieb:</p>
<blockquote>
<p>Das wäre mir neu. Chapter und Verse, bitte.</p>
</blockquote>
<p>Hmm... da erwischt du mich auf dem falschen Fuß. Ich habe momentan keine Ahnung, wo ich das herhatte, ich glaube aber aus dem Standard oder eines von Sutters Büchern. Von daher habe ich dieser Behauptung auch geglaubt. Ich meine, das damit zutun, dass es eine const T&amp; ist. Für diese kann eine temporäre Variable angelegt werden, sofern T nicht const oder vom Typ T ist. Ändert man nun das a in meinem Beispiel, so wäre die temporäre Variable, die b referenziert, nicht mehr synchron mit der eigentlichen.</p>
<p>Besser verständlich, macht es wohl dieses Beispiel. Ich würde jetzt nicht meine Hand ins Feuer legen, dass mein letztes 100% richtig ist, da mir die Quelle fehlt.</p>
<pre><code class="language-cpp">int i = 5;
const double&amp; d = i; // ist okay, es wird ein temporärer double angelegt, der solange lebt wie d
i = 6; // was nun?
</code></pre>
<p>Das steht auf jeden Fall im Struppi beschrieben im Kapitel 5.5 (Seite 106 in der 3. Auflage).</p>
</blockquote>
<p>Lies dir das nochmal durch... ein temporary wird nur erzeugt, wenn eine referenz auf const an ein rvalue gebunden werden soll. in diesem falle lebt das temporary solange wir die referenz. In obigem beispiel ist i bei der initialisierung aber ein lvalue, und es wird kein temporary erzeugt, i und d sind völlig syncron, d ist nur ein alias. wenn i geändert wird, ändert sich auch d. const ist immer nur einschränkung bezüglich dessen, was man mit einem objekt machen kann. es bedeutet nicht zwingend, dass sich das objekt nicht ändert - diese garantie kann nur gegeben werden, falls das objekt nirgendwo im system einen non-const namen hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846509</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846509</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 05 Aug 2005 12:40:08 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Fri, 05 Aug 2005 12:54:23 GMT]]></title><description><![CDATA[<p>Der Typ ist aber unterschiedlich, wodurch auch ein Temporary erzeugt wird (solange eine geeignete Konvertierung existiert). Wie sollte es sonst auch gehen, int und double sind (zumindest in 99%) auch nicht binär kompatibel. Kann man in 5 Minuten auch selbst ausprobieren.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

int main ()
{
  int i = 5;
  const double&amp; d = i;
  cout &lt;&lt; i &lt;&lt; &quot; &quot; &lt;&lt; d &lt;&lt; endl;
  ++i;
  cout &lt;&lt; i &lt;&lt; &quot; &quot; &lt;&lt; d &lt;&lt; endl;
}
</code></pre>
<p>Ausgabe unter g++:<br />
5 5<br />
6 5</p>
<p>Was aber aufgrund der Referenz semantischer Unfug ist. Das würde zumindest stützen, dass das nicht definiertes Verhalten ist. Für Gegenbeispiele bin ich aber gerne offen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846516</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846516</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Fri, 05 Aug 2005 12:54:23 GMT</pubDate></item><item><title><![CDATA[Reply to wieso Konstanten mit &amp;quot;const&amp;quot; erzeugen ? on Fri, 05 Aug 2005 13:32:20 GMT]]></title><description><![CDATA[<p>ups, gar nicht gesehen, dass i und d unterscheidlichen typ haben <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="😮"
    /><br />
dann ist nat. alles klar. ein lvalue kann nat. nur an eine (ggf. const-qualifizierte) referenz gleichen typs gebunden werden. ansonsten kann ein int in ein double konvertiert werden. das ergebnis einer solchen konvertierung ist aber ein rvalue - folglich wird ein temporary erzeugt, dass sich folgerichtig nicht ändert, wenn i geändert wird. (wenn ich mich richtig erinnere dient obiges beispiel insbesondere zur begründung, warum rvalues nicht an referenzen auf nicht const gebunden werden können)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846557</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 05 Aug 2005 13:32:20 GMT</pubDate></item></channel></rss>