<?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[Referenzdekleration]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>Wuerde gerne wissen was der Unterschied bei den folgenden beiden Beispielen ist:</p>
<p><em>Leere Kopierkonstruktoren:</em></p>
<pre><code>Mensch(const Mensch&amp;){}  
Mensch(const Mensch*){}
</code></pre>
<p><em>Ausgaben:</em></p>
<pre><code>&lt;&lt; &amp;var &lt;&lt; '\n'
&lt;&lt; *var &lt;&lt; '\n'
</code></pre>
<p>Die Frage waere nun eben was bei den Kopierkonstruktoren der Unterschied ist, und was das bei den Ausgaben fuer einen Unterschied macht, denn ich meinte das bei den Ausgaben die Wirkung gleich ist, ob nun '&amp;' oder '*' voransteht.</p>
<p>Freundliche Gruesse<br />
Fabian</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/200387/referenzdekleration</link><generator>RSS for Node</generator><lastBuildDate>Sun, 04 Oct 2026 20:46:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/200387.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 14 Dec 2007 09:22:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Referenzdekleration on Fri, 14 Dec 2007 09:22:25 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>Wuerde gerne wissen was der Unterschied bei den folgenden beiden Beispielen ist:</p>
<p><em>Leere Kopierkonstruktoren:</em></p>
<pre><code>Mensch(const Mensch&amp;){}  
Mensch(const Mensch*){}
</code></pre>
<p><em>Ausgaben:</em></p>
<pre><code>&lt;&lt; &amp;var &lt;&lt; '\n'
&lt;&lt; *var &lt;&lt; '\n'
</code></pre>
<p>Die Frage waere nun eben was bei den Kopierkonstruktoren der Unterschied ist, und was das bei den Ausgaben fuer einen Unterschied macht, denn ich meinte das bei den Ausgaben die Wirkung gleich ist, ob nun '&amp;' oder '*' voransteht.</p>
<p>Freundliche Gruesse<br />
Fabian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1420352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1420352</guid><dc:creator><![CDATA[FabianR]]></dc:creator><pubDate>Fri, 14 Dec 2007 09:22:25 GMT</pubDate></item><item><title><![CDATA[Reply to Referenzdekleration on Fri, 14 Dec 2007 09:27:16 GMT]]></title><description><![CDATA[<p>1. Der zweite Konstruktor ist kein Kopierkonstruktor, da er einen anderen Typ als den der Klasse entgegennimmt, nämlich einen Zeiger. Ansonsten ist der Unterschied (generell), dass man bei einem Zeiger NULL übergeben kann, ihn ändern darf und ihn dereferenzieren muss.</p>
<p>2. Das erste gibt die Adresse aus, an der var im Speicher steht, und das zweite gibt den Inhalt dessen aus, worauf var zeigt. Das zweite setzt voraus, dass var ein Zeiger ist, sonst gibt es einen Compilefehler. Gleich sind die Ausgaben auf keinen Fall, eher das genaue Gegenteil.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1420354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1420354</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 14 Dec 2007 09:27:16 GMT</pubDate></item><item><title><![CDATA[Reply to Referenzdekleration on Fri, 14 Dec 2007 09:41:54 GMT]]></title><description><![CDATA[<p>OK, danke vielmals fuer die schnelle Antwort. Was bewirkt aber eigentlech das '&amp;' bei diesem Kopierkonstruktor:</p>
<pre><code>Mensch(const Mensch&amp;){}
</code></pre>
<p>Oder anderst gefragt, wieso kann man das '&amp;' nicht weglassen? Sry fuer diese dummen Fragen, aber C++ ist neu ein bisschen Neuland fuer mich. <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/1420369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1420369</guid><dc:creator><![CDATA[FabianR]]></dc:creator><pubDate>Fri, 14 Dec 2007 09:41:54 GMT</pubDate></item><item><title><![CDATA[Reply to Referenzdekleration on Fri, 14 Dec 2007 09:52:06 GMT]]></title><description><![CDATA[<p>Ich gebe der Referenz mal noch einen Namen, damit man besser drüber sprechen kann:</p>
<pre><code class="language-cpp">Mensch(const Mensch&amp; quelle)
</code></pre>
<p>Damit deklarierst Du eine Referenz quelle auf das Parameterobjekt. An diese Referenz wird beim Aufrufen der Parameter <strong>gebunden</strong> - also im Konstruktor ist &quot;quelle&quot; ein anderer Name für das übergebene Objekt.</p>
<pre><code class="language-cpp">Mensch person1; // irgendein Mensch
Mensch person2( person1 ); // Aufruf Copy-Konstruktor.

Mensch::Mensch( Mensch const&amp; quelle )
{
    // Hier ist quelle bei o.a. Aufruf ein anderer Name für person1.
}
</code></pre>
<p>Wenn Du statt einer Referenz ein Objekt übergeben würdest (ohne &amp;), wäre quelle eine Kopie von person1. Inhaltlich identisch, aber ansonsten unabhängig. Der Vorteil von Referenzen in diesem Fall ist einfach, dass nicht kopiert werden muss, weil ja aus quelle sowieso nur gelesen wird.</p>
<p>Lässt Du const weg, sind die Auswirkungen sogar noch größer: Änderungen an quelle wirken sich bei einer Referenz auf das Objekt person1 aus, Änderungen an einer Kopie von quelle lassen person1 hingegen kalt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1420381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1420381</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 14 Dec 2007 09:52:06 GMT</pubDate></item><item><title><![CDATA[Reply to Referenzdekleration on Fri, 14 Dec 2007 09:59:45 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Wenn Du statt einer Referenz ein Objekt übergeben würdest (ohne &amp;), wäre quelle eine Kopie von person1. Inhaltlich identisch, aber ansonsten unabhängig. Der Vorteil von Referenzen in diesem Fall ist einfach, dass nicht kopiert werden muss, weil ja aus quelle sowieso nur gelesen wird.</p>
</blockquote>
<p>Eine kleine Ergänzung: In allgemeinen Funktionen ist der Unterschied nur minimal (und wirkt sich primär so aus, daß du bei Kopie den Parameter für temp-Werte nutzen kannst und bei Referenz die Daten nicht kopiert werden müssen). Beim Copy-Ctor ist es jedoch gravierend - dort den Parameter als Kopie zu übergeben würde eine Endlos-Rekursion auslösen (und ist deshalb verboten).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1420389</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1420389</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 14 Dec 2007 09:59:45 GMT</pubDate></item></channel></rss>