<?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[Einige Fragen zu Referenzen]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe einige Fragen zu Referenzen und hoffe jemand kann mir diese beantworten <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>In Bezug auf getter-Methoden mal ein Beispiel:<br />
Ich habe eine&quot;Info&quot; Klasse die ein ein Objekt der Klasse State besitzt, welches abgefragt werden kann;</p>
<pre><code class="language-cpp">class State;

class Info
{
...
const State&amp; getState1() { return m_state; }
State getState2() { return m_state; }
...
private:
State m_state;
};

...
int main()
{
   ...
   State state1 = rInfo.getState1();  // state1 wird erzeugt und der Zuweisungsoperator von State ausgeführt (?), ich kann state1 auch verändern
   State&amp; state2 = rInfo.getState1();  // error weil nicht const
   const State&amp; state3 = rInfo.getState1()  // es wird kein Objekt erzeugt, ich kann state3 nicht verändern

   State state4 = rInfo.getState2();  // genau gleich wie bei state1?
   State&amp; state5 = rInfo.getState2(); // ?
   ...
}
</code></pre>
<p>Ich habe leder nirgends Infos dazu gefunden (wusste auch nicht wie danach suchen)...</p>
<p>Danke für jede Antwort!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/219640/einige-fragen-zu-referenzen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 01:54:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/219640.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 05 Aug 2008 19:06:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Einige Fragen zu Referenzen on Tue, 05 Aug 2008 19:06:42 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe einige Fragen zu Referenzen und hoffe jemand kann mir diese beantworten <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>In Bezug auf getter-Methoden mal ein Beispiel:<br />
Ich habe eine&quot;Info&quot; Klasse die ein ein Objekt der Klasse State besitzt, welches abgefragt werden kann;</p>
<pre><code class="language-cpp">class State;

class Info
{
...
const State&amp; getState1() { return m_state; }
State getState2() { return m_state; }
...
private:
State m_state;
};

...
int main()
{
   ...
   State state1 = rInfo.getState1();  // state1 wird erzeugt und der Zuweisungsoperator von State ausgeführt (?), ich kann state1 auch verändern
   State&amp; state2 = rInfo.getState1();  // error weil nicht const
   const State&amp; state3 = rInfo.getState1()  // es wird kein Objekt erzeugt, ich kann state3 nicht verändern

   State state4 = rInfo.getState2();  // genau gleich wie bei state1?
   State&amp; state5 = rInfo.getState2(); // ?
   ...
}
</code></pre>
<p>Ich habe leder nirgends Infos dazu gefunden (wusste auch nicht wie danach suchen)...</p>
<p>Danke für jede Antwort!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1559834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1559834</guid><dc:creator><![CDATA[osiris81]]></dc:creator><pubDate>Tue, 05 Aug 2008 19:06:42 GMT</pubDate></item><item><title><![CDATA[Reply to Einige Fragen zu Referenzen on Tue, 05 Aug 2008 19:31:27 GMT]]></title><description><![CDATA[<p><a href="http://www.iks.hs-merseburg.de/~kilian/ak_Dateien/ak_lehre_Dateien/2007_SS/Bioinformatik_VL/Lehrmaterial/C++/Kurs%20Volkhard%20Henkel/html/inhalt.html" rel="nofollow">Hier</a> Lektion 36 und 37 behandelt referenzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1559841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1559841</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Tue, 05 Aug 2008 19:31:27 GMT</pubDate></item><item><title><![CDATA[Reply to Einige Fragen zu Referenzen on Tue, 05 Aug 2008 19:36:07 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>dabei geht es aber nur um Referenzen als Argumente (Call by Reference) und nie um Referenzen als Rückgabewert, also meine konkreten Fragen kann ich damit nicht beantworten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1559848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1559848</guid><dc:creator><![CDATA[osiris81]]></dc:creator><pubDate>Tue, 05 Aug 2008 19:36:07 GMT</pubDate></item><item><title><![CDATA[Reply to Einige Fragen zu Referenzen on Tue, 05 Aug 2008 19:43:49 GMT]]></title><description><![CDATA[<p>OK, naja das ist im Grunde alles Ähnlich, das Referenzbeispiel erklärt genau was du meinst, abe rich schreib dir mal Kommentare.</p>
<pre><code class="language-cpp">State state1 = rInfo.getState1();  // das ist eine Kopie vom zurückgegebenen m_state
   State&amp; state2 = rInfo.getState1();  // das ist eine Referenz auf das Original m_state, mit dieser Referenz könntest du m_state verädnern, da die zuweisung aber const ist geht das nicht
   const State&amp; state3 = rInfo.getState1()  //da weis ich nicht 100%ig bescheid

   State state4 = rInfo.getState2();  // wieder eine Kopie von m_state
   State&amp; state5 = rInfo.getState2(); // eine referenz auf m_state über die du m_state direkt manipulieren kannst
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1559853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1559853</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Tue, 05 Aug 2008 19:43:49 GMT</pubDate></item><item><title><![CDATA[Reply to Einige Fragen zu Referenzen on Tue, 05 Aug 2008 20:04:31 GMT]]></title><description><![CDATA[<p>Danke nochmals für deinen Beitrag</p>
<pre><code class="language-cpp">const State&amp; state3 = rInfo.getState1()  //da weis ich nicht 100%ig bescheid
</code></pre>
<p>Na ich denke dies ist doch der Normalfall für ein getter-Methode wenn ich nur lesend darauf zugreifen möchte (das Objekt der Info-Klasse kann nicht verändert werden und es muss kein temporäres Objekt zusätzlich erzeugt werden)</p>
<pre><code class="language-cpp">State&amp; state5 = rInfo.getState2(); // eine referenz auf m_state über die du m_state direkt manipulieren kannst
</code></pre>
<p>Dann ist die Variante getState2() für eine getter-Methode also falsch, da der Benutzer der Info Klasse nun den Zustand des Info-Objekts manipulieren kann (was ja nicht der Sinn der Sache ist, es ist ja eben keine set-Methode)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1559862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1559862</guid><dc:creator><![CDATA[osiris81]]></dc:creator><pubDate>Tue, 05 Aug 2008 20:04:31 GMT</pubDate></item><item><title><![CDATA[Reply to Einige Fragen zu Referenzen on Tue, 05 Aug 2008 20:35:02 GMT]]></title><description><![CDATA[<p>Xebov schrieb:</p>
<blockquote>
<p>OK, naja das ist im Grunde alles Ähnlich, das Referenzbeispiel erklärt genau was du meinst, abe rich schreib dir mal Kommentare.</p>
</blockquote>
<p>Zum Teil leider falsche Kommentare, ich korrigier mal:</p>
<pre><code class="language-cpp">State state1 = rInfo.getState1();  
/* state1 ist ein neues State-Objekt und wird mit der Referenz auf m_state initialisiert, das ist ok genau dann wenn State einen Copy-Ctor hat
(wenn der nicht grade eine non-const referenz als argument hat), z.B. vom compiler generierter copy-ctor */
   State&amp; state2 = rInfo.getState1();  
/* wie vom OP bemerkt ein Fehler, eine nicht-konstante referenz kann nicht an eine const referenz gebunden werden */
   const State&amp; state3 = rInfo.getState1()  
/* state3 verweist auf m_state, const ref an const ref zu binden ist das was am offensichtlichsten funktioniert */

   State state4 = rInfo.getState2();  
/* wieder eine Kopie von m_state, im Grunde sogar eine Kopie von der Kopie: getState2 liefert eine Kopie, state4 wird mittels copy-Ctor
mit dieser Kopie initialisiert. die 2te Kopie wird vom Compiler meist wegoptimiert */
   State&amp; state5 = rInfo.getState2(); 
/* die referenz state5 wird an das temporäre Objekt gebunden, das von getState2 übergeben wird, FEHLER! */
  const State&amp; state6 = rInfo.getState2(); 
/* die konstante referenz state6 wird an das temporäre Objekt gebunden, das von getState2 übergeben wird, das ist KEIN Fehler: 
const-referenzen auf temporäre Objekte halten diese am Leben, bis die Referenz verschwindet, siehe
http://herbsutter.wordpress.com/2008/01/01/gotw-88-a-candidate-for-the-most-important-const/ */
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1559870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1559870</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 05 Aug 2008 20:35:02 GMT</pubDate></item><item><title><![CDATA[Reply to Einige Fragen zu Referenzen on Tue, 05 Aug 2008 21:29:10 GMT]]></title><description><![CDATA[<p>Vielen Dank pumuckl, das hilft mir sehr! <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/1559891</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1559891</guid><dc:creator><![CDATA[osiris81]]></dc:creator><pubDate>Tue, 05 Aug 2008 21:29:10 GMT</pubDate></item></channel></rss>