<?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[Frage zu Referenzen]]></title><description><![CDATA[<p>ich lerne für eine Klausur in C++. jetzt steht da so eine Aufgabe:</p>
<p>int f(int);<br />
int&amp; g(const int&amp;);</p>
<p>Welche der folgenden Ausdrücke lässt sich kompilieren?</p>
<p>int i = f(g(5));<br />
int i = g(f(5));<br />
f(5) = 7;<br />
g(5) = 7;</p>
<p>kann mir jemand Helfen? Zu referenzen stand in meinem Skript nur eine Seite und dann so was... Kann es sein, dass sich da jemand verschrieben hat? ich blick da irgendwie überhaupt nicht durch.</p>
<p>schon vielen dank für antworten( möglichst in den nächsten 24 stunden)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/271212/frage-zu-referenzen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 14:58:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/271212.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 24 Jul 2010 23:23:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Referenzen on Sat, 24 Jul 2010 23:23:54 GMT]]></title><description><![CDATA[<p>ich lerne für eine Klausur in C++. jetzt steht da so eine Aufgabe:</p>
<p>int f(int);<br />
int&amp; g(const int&amp;);</p>
<p>Welche der folgenden Ausdrücke lässt sich kompilieren?</p>
<p>int i = f(g(5));<br />
int i = g(f(5));<br />
f(5) = 7;<br />
g(5) = 7;</p>
<p>kann mir jemand Helfen? Zu referenzen stand in meinem Skript nur eine Seite und dann so was... Kann es sein, dass sich da jemand verschrieben hat? ich blick da irgendwie überhaupt nicht durch.</p>
<p>schon vielen dank für antworten( möglichst in den nächsten 24 stunden)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1931180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1931180</guid><dc:creator><![CDATA[Mredl]]></dc:creator><pubDate>Sat, 24 Jul 2010 23:23:54 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Referenzen on Sat, 24 Jul 2010 23:44:14 GMT]]></title><description><![CDATA[<p>Wie wäre es, wenn du einfach die Sprache lernen würdest? Referenzen gehören zu den Grundlagen, das dürfte nicht allzu schwer sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1931181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1931181</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Sat, 24 Jul 2010 23:44:14 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Referenzen on Sat, 24 Jul 2010 23:56:18 GMT]]></title><description><![CDATA[<p>Mredl schrieb:</p>
<blockquote>
<p>Welche der folgenden Ausdrücke lässt sich kompilieren?</p>
</blockquote>
<p>Ersetze die Funktionen durch ihre Rückgabetypen und prüfe nach, ob der resultierende Ausdruck erlaubt ist. Nicht erlaubt ist eine Zuweisung zu einer Non-Const-Referenz ( <code>int&amp;</code> ) von einem konstanten Wert ( <code>const int</code> ) bzw. von einer Referenz auf einen solchen ( <code>const int&amp;</code> ) oder von einem Wert ( <code>int</code> ), wenn es sich bei letzterem um einen temporären Ausdruck handelt. Hinzufügen von <code>const</code> -Qualifizierern ist erlaubt, ebenso das Binden von temporären Objekten an Const-Referenzen. Wert-Kopien sind natürlich immer möglich, ungeachtet der Qualifizierer.</p>
<pre><code class="language-cpp">const int a = 5;
int b = 6;

const int&amp; ca = a;  // erlaubt
const int&amp; cb = b;  // erlaubt
const int&amp; cc = 5;  // erlaubt, temporärer Wert an Const-Referenz gebunden

int&amp; ra = a;        // verboten, a ist konstant
int&amp; rb = ca;       // verboten, ca zeigt auf konstanten Wert
int&amp; rc = cb;       // verboten, ungeachtet der Veränderbarkeit von b
int&amp; rd = 5;        // verboten, 5 ist temporär (&quot;RValue&quot;)
int&amp; re = b;        // erlaubt

const int&amp; cd = ra; // erlaubt, man schränkt Zugriff mit const ein
const int&amp; ce = cd; // erlaubt
</code></pre>
<p>Dein Beispiel könntest du so zerlegen (links des Pfeils steht der Typ des Ausdrucks, rechts der erwartete Typ für den nächst-äusseren Teilausdruck, also der Parametertyp der Funktion oder der Typ der zuzuweisenden Variable):</p>
<pre><code class="language-cpp">5    // int  -&gt; const int&amp;, okay
          g(5)   // int&amp; -&gt; int,        okay
        f(g(5))  // int  -&gt; int,        okay
int i = f(g(5)); // Gesamtausdruck ist kompilierbar
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1931183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1931183</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 24 Jul 2010 23:56:18 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Referenzen on Sun, 25 Jul 2010 09:45:01 GMT]]></title><description><![CDATA[<p>vielen Dank, Nexus!<br />
eine konstruktive und hilfreiche Antwort genau das habe ich gebraucht. Du hast mir den Tag gerettet :D.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1931251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1931251</guid><dc:creator><![CDATA[Mredl]]></dc:creator><pubDate>Sun, 25 Jul 2010 09:45:01 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Referenzen on Sun, 25 Jul 2010 12:23:41 GMT]]></title><description><![CDATA[<p>also nur zum Verständins:<br />
kommt nun<br />
int i = f(g(5)); //Ja<br />
int i = g(f(5)); //Nein<br />
f(5) = 7; //Nein<br />
g(5) = 7; //Ja<br />
..dabei raus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1931321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1931321</guid><dc:creator><![CDATA[der Ahnungslose]]></dc:creator><pubDate>Sun, 25 Jul 2010 12:23:41 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Referenzen on Sun, 25 Jul 2010 12:32:49 GMT]]></title><description><![CDATA[<p>oder doch lieber<br />
ja<br />
ja<br />
ja<br />
nein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1931325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1931325</guid><dc:creator><![CDATA[die sophia]]></dc:creator><pubDate>Sun, 25 Jul 2010 12:32:49 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Referenzen on Sun, 25 Jul 2010 12:35:51 GMT]]></title><description><![CDATA[<p>ok, jetzt bin ich verwirrt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1931329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1931329</guid><dc:creator><![CDATA[Mredl]]></dc:creator><pubDate>Sun, 25 Jul 2010 12:35:51 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Referenzen on Sun, 25 Jul 2010 12:37:36 GMT]]></title><description><![CDATA[<p>Ob die Ausdrücke kompilierbar sind, dürfte nicht allzu schwer festzustellen sein...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1931331</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1931331</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 25 Jul 2010 12:37:36 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Referenzen on Sun, 25 Jul 2010 12:39:41 GMT]]></title><description><![CDATA[<p>Was hindert Euch denn daran, es einfach auszuprobieren? Wenn dann der Compiler sich nicht so verhält, wie ihr es erwartet, dann könnt ihr ja nachfragen, wieso das so ist. Bis dahin, sehe ich nicht die Notwendigkeit, hier jemanden etwas vorzurechnen, was der Compiler für einen erledigen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1931333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1931333</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 25 Jul 2010 12:39:41 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Referenzen on Sun, 25 Jul 2010 12:42:33 GMT]]></title><description><![CDATA[<p>Stimmt...<br />
Compiler gibt es (teilweise) gratis zum Download</p>
<pre><code class="language-cpp">int f(int);
int&amp; g(const int&amp;);
int main()
{
        int i = f(g(5));
        int i2 = g(f(5));
        f(5) = 7; // &lt;-- Zeile 7 !!!
        g(5) = 7;
        return 0;
}
</code></pre>
<blockquote>
<p>test.cpp: In function ‘int main()’:<br />
test.cpp:7: error: lvalue required as left operand of assignment</p>
</blockquote>
<p>krümelkacker schrieb:</p>
<blockquote>
<p>Was hindert Euch denn daran, es einfach auszuprobieren? Wenn dann der Compiler sich nicht so verhält, wie ihr es erwartet, dann könnt ihr ja nachfragen, wieso das so ist.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1931336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1931336</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 25 Jul 2010 12:42:33 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Referenzen on Sun, 25 Jul 2010 12:57:42 GMT]]></title><description><![CDATA[<p>sorry wenn ich euch auf die nerven geh(morgen muss ich das alles können o.o), aber wenn ich das in compiler eingeb, kommt auch ne &quot;Linked error undefined reference to g(int const&amp;)&quot; und &quot;Linked error undefined reference to f(int)&quot; Meldung</p>
<p>&quot;int f(int);<br />
int&amp; g(const int&amp;);<br />
int main()<br />
{<br />
int i = f(g(5));<br />
return 0;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1931346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1931346</guid><dc:creator><![CDATA[Mredl]]></dc:creator><pubDate>Sun, 25 Jul 2010 12:57:42 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Referenzen on Sun, 25 Jul 2010 13:04:04 GMT]]></title><description><![CDATA[<p>Mredl schrieb:</p>
<blockquote>
<p>sorry wenn ich euch auf die nerven geh(morgen muss ich das alles können o.o), aber wenn ich das in compiler eingeb, kommt auch ne &quot;Linked error undefined reference to g(int const&amp;)&quot; und &quot;Linked error undefined reference to f(int)&quot; Meldung</p>
</blockquote>
<p>kein Problem...</p>
<p>Dein Linker sucht nach der Implementierung der Funktion und die findet er nicht.<br />
Deinem Compiler reicht die Vorwärtsdeklaration und er 'denkt sich',<br />
wenn er das Programm erstellen will muss er die noch irgendwie zur Verfügung<br />
stellen und darum kümmert sich schon der Linker.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1931353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1931353</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 25 Jul 2010 13:04:04 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Referenzen on Sun, 25 Jul 2010 13:15:42 GMT]]></title><description><![CDATA[<p>ok danke. das hatte mich noch irritiert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1931357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1931357</guid><dc:creator><![CDATA[Mredl]]></dc:creator><pubDate>Sun, 25 Jul 2010 13:15:42 GMT</pubDate></item></channel></rss>