<?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[Zeiger oder Referenz?]]></title><description><![CDATA[<p>Hallo zusammen!</p>
<p>bin grad wieder fleißig am Programmieren (totaler anfänger!) und komm mit zeigern und referenzen nicht ganz zurecht. Kann mir jemand sagen, wann ich zeiger und wann referenzen verwenden sollte? und gibt es fälle, in denen ich nur zeiger und keine referenzen (oder umgekehrt) verwenden kann? Hoffe es kann mir jemand weiterhelfen. Danke schonmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/121015/zeiger-oder-referenz</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 14:43:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/121015.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 19 Sep 2005 07:23:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeiger oder Referenz? on Mon, 19 Sep 2005 07:23:30 GMT]]></title><description><![CDATA[<p>Hallo zusammen!</p>
<p>bin grad wieder fleißig am Programmieren (totaler anfänger!) und komm mit zeigern und referenzen nicht ganz zurecht. Kann mir jemand sagen, wann ich zeiger und wann referenzen verwenden sollte? und gibt es fälle, in denen ich nur zeiger und keine referenzen (oder umgekehrt) verwenden kann? Hoffe es kann mir jemand weiterhelfen. Danke schonmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/875430</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/875430</guid><dc:creator><![CDATA[BINA]]></dc:creator><pubDate>Mon, 19 Sep 2005 07:23:30 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger oder Referenz? on Mon, 19 Sep 2005 07:30:10 GMT]]></title><description><![CDATA[<p>1. Zeiger sind mächtiger wie Referenzen<br />
2. Mann sollte im allgemeinen Referenzen verwenden statt Zeiger, wenn es möglich ist</p>
]]></description><link>https://www.c-plusplus.net/forum/post/875433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/875433</guid><dc:creator><![CDATA[Vertexwahn]]></dc:creator><pubDate>Mon, 19 Sep 2005 07:30:10 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger oder Referenz? on Mon, 19 Sep 2005 07:34:00 GMT]]></title><description><![CDATA[<p>wenn ich eine Variable mit einem anderen Wert überschreiben möchte, kann ich das auch mit referenzen machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/875436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/875436</guid><dc:creator><![CDATA[BINA]]></dc:creator><pubDate>Mon, 19 Sep 2005 07:34:00 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger oder Referenz? on Mon, 19 Sep 2005 07:38:36 GMT]]></title><description><![CDATA[<blockquote>
<p>gibt es fälle, in denen ich nur zeiger und keine referenzen (oder umgekehrt) verwenden kann?</p>
</blockquote>
<p>wenn du speicher mit new reservierst brauchst du einen Zeiger</p>
<blockquote>
<p>wenn ich eine Variable mit einem anderen Wert überschreiben möchte, kann ich das auch mit referenzen machen?</p>
</blockquote>
<blockquote>
<p>include &lt;iostream&gt;<br />
using namespace std;</p>
<p>void addition(int&amp; summe, const int&amp; operant1, const int&amp; operant2)<br />
{</p>
<p>summe = operant1 + operant2;</p>
<p>}</p>
<p>int main()<br />
{<br />
int a = 4;<br />
int b = 6;<br />
int ergebnis;<br />
addition(ergebnis, a, b);<br />
}</p>
</blockquote>
<p>Tutorial zu Zeiger + Referenzen:<br />
<a href="http://www.zfx.info/Tutorials.php?ID=96" rel="nofollow">http://www.zfx.info/Tutorials.php?ID=96</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/875442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/875442</guid><dc:creator><![CDATA[Vertexwahn]]></dc:creator><pubDate>Mon, 19 Sep 2005 07:38:36 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger oder Referenz? on Mon, 19 Sep 2005 07:43:37 GMT]]></title><description><![CDATA[<p>Es gibt ja zwei Zugriffsmodi in Funktionen:<br />
Call by reference und Call by value<br />
Call by value bedeutet, ich rufe die Funktion mit einem Wert auf, der in der Funktion verarbeitet wird, jedoch ändert sich nichts an dem Wert, den ich übergebe.<br />
Call by reference ist entweder mit einer Referenz (wie man am Namen schon hört), oder mit einem Pointer. Bei einer Referenz wird der Inhalt mit verändert, jedoch muss man beispielsweise, wie im Vergleich mit einem Pointer nicht dereferenzieren, was für manche den Umgang damit erleichtert, jedoch kann man mit Zeigern beispielsweise auch die Adresse der behandelten Variable verändern, oder die Adresse, auf die gezeigt wird und Referenzen sind in diesem Fall fest. Bei Call by reference ändert sich der Wert der übergebenen Variable, wodurch man beispielsweise return-Werte umgehen kann, oder dafür sorgen, dass mehrere Werte durch eine Funktion verändert werden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/875446</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/875446</guid><dc:creator><![CDATA[Vorden]]></dc:creator><pubDate>Mon, 19 Sep 2005 07:43:37 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger oder Referenz? on Mon, 19 Sep 2005 07:44:47 GMT]]></title><description><![CDATA[<p>ich habe einen array, der im laufe des Programms seinen ihalt wechselt, nicht aber seine Größe. wie mache ich das mit referenzen?<br />
Beispiel:<br />
erster Schleifendurchlauf:<br />
a[0]=5;<br />
a[1]=6;<br />
a[2]=8;</p>
<p>im nächsten Durchlauf soll das array dann andere Werte beinhalten:<br />
a[0]=12;<br />
a[1]=34;<br />
a[2]=88;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/875448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/875448</guid><dc:creator><![CDATA[BINA]]></dc:creator><pubDate>Mon, 19 Sep 2005 07:44:47 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger oder Referenz? on Mon, 19 Sep 2005 08:04:45 GMT]]></title><description><![CDATA[<p>Du könntest die Speicherstelle als Referenz übergeben..</p>
<pre><code class="language-cpp">void change(int&amp; wandel_mich) {
  wandel_mich += 2;
}

int main() {
  int arr[4];
  for(int i = 0; i &lt; 4; ++i) 
    arr[i] = i+(i*2);

  for( i = 0; i &lt; 4; ++i) 
    change(arr[0]);
  return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/875468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/875468</guid><dc:creator><![CDATA[hehejo]]></dc:creator><pubDate>Mon, 19 Sep 2005 08:04:45 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger oder Referenz? on Mon, 19 Sep 2005 09:13:31 GMT]]></title><description><![CDATA[<p>Vertexwahn schrieb:</p>
<blockquote>
<p>1. Zeiger sind mächtiger wie Referenzen<br />
2. Mann sollte im allgemeinen Referenzen verwenden statt Zeiger, wenn es möglich ist</p>
</blockquote>
<p>unfug. denk erstmal nach, bevor du strcpy mit referenzparametern ausrüstetst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/875525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/875525</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 19 Sep 2005 09:13:31 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger oder Referenz? on Mon, 19 Sep 2005 12:34:55 GMT]]></title><description><![CDATA[<p>Vertexwahn schrieb:</p>
<blockquote>
<p>wenn du speicher mit new reservierst brauchst du einen Zeiger</p>
</blockquote>
<p>Nicht zwängsläufig. Du kannst auch direkt dereferenzieren:</p>
<pre><code class="language-cpp">foo&amp; a = *new foo;
//...
delete &amp;a;
</code></pre>
<p>Ist zwar keine empfehlenswerte Vorgehensweise (imo), aber möglich. Das ist übrigens legaler Code, da new keinen Nullzeiger zurückgibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/875689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/875689</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Mon, 19 Sep 2005 12:34:55 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger oder Referenz? on Mon, 19 Sep 2005 17:41:45 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Vertexwahn schrieb:</p>
<blockquote>
<p>1. Zeiger sind mächtiger wie Referenzen<br />
2. Mann sollte im allgemeinen Referenzen verwenden statt Zeiger, wenn es möglich ist</p>
</blockquote>
<p>unfug. denk erstmal nach, bevor du strcpy mit referenzparametern ausrüstetst.</p>
</blockquote>
<p>Es gibt halt einige C Programmierer, die denken Referenzen sind unnötig, da man ja mit Zeigern das gleiche erreicht - dahher habe ich das so &quot;hart&quot; formuliert</p>
<blockquote>
<p>Nicht zwängsläufig. Du kannst auch direkt dereferenzieren:</p>
<pre><code class="language-cpp">foo&amp; a = *new foo;
//...
delete &amp;a;
</code></pre>
</blockquote>
<p>ihr seid doch alle krank <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="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/876007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/876007</guid><dc:creator><![CDATA[Vertexwahn]]></dc:creator><pubDate>Mon, 19 Sep 2005 17:41:45 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger oder Referenz? on Mon, 19 Sep 2005 18:14:19 GMT]]></title><description><![CDATA[<p>Vertexwahn schrieb:</p>
<blockquote>
<p>Es gibt halt einige C Programmierer, die denken Referenzen sind unnötig, da man ja mit Zeigern das gleiche erreicht - dahher habe ich das so &quot;hart&quot; formuliert</p>
</blockquote>
<p>hart formulieren ist ok. aber lügen ist nicht ok.</p>
<p>diesen c-programmierern sagte einfach, daß sie ohne referenzen keinen copy-ctor bauen können. und viele operatoren werden erst mit referenzen erlauben, daß sie die klasse wie ein int anfühlt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/876029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/876029</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 19 Sep 2005 18:14:19 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger oder Referenz? on Mon, 19 Sep 2005 18:48:30 GMT]]></title><description><![CDATA[<p>Letztendlich sind Referenzen imo trotzdem nur eine Vereinfachung von Pointern:</p>
<p>- Man braucht die Syntax mit dem Dereferenzierungsoperator nicht wenn man einen Übergabeparameter verändern will,<br />
- Referenzen können `eigentlich` nicht ungültig sein und<br />
- man spart sich wie bei Pointern den Cpy C'tor.</p>
<p>Dem Compiler wirds wohl im Endeffekt egal sein...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/876050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/876050</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Mon, 19 Sep 2005 18:48:30 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger oder Referenz? on Mon, 19 Sep 2005 18:55:44 GMT]]></title><description><![CDATA[<p>FireFlow schrieb:</p>
<blockquote>
<p>- man spart sich wie bei Pointern den Cpy C'tor.</p>
</blockquote>
<p>verstehe ich nicht - warum spart man sich den?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/876057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/876057</guid><dc:creator><![CDATA[Vertexwahn]]></dc:creator><pubDate>Mon, 19 Sep 2005 18:55:44 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger oder Referenz? on Mon, 19 Sep 2005 18:58:41 GMT]]></title><description><![CDATA[<p>Ich sehe die groessere Sicherheit mit Referenzen schon, aber ich persoenlich habe immer mit Zeigern gearbeitet, da eine Referenz in der letzten Instanz doch nur &quot;an alternative name for an object&quot; ist. Ich persoenlich arbeite dann lieber mit einem Pointer auf das Object, den ich auch NULL setzen kann, falls dieser nicht gesetzt sein sollte oder konnte.</p>
<p>Den tieferen Sinn des Copy-Konstruktors habe ich auch nie eingesehen - zumindest nicht bei nicht-trivialen Klassen. Wenn zwei oder mehr Instanzen einer Klasse benotige, die die gleichen Daten enthalten oder sich nur unwesentlich unterscheiden, dann baue ich eher eine weitere Klasse, die die gemeinsamen Daten beinhalten und lasse einen Pointer als Member der Klasse auf die Klasse mit den gemeinsamen Daten zeigen.</p>
<p>Aber das ist keine dogmatische Erklaerung, das ist mein Stil C++ zu schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/876059</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/876059</guid><dc:creator><![CDATA[MBCS-CITP]]></dc:creator><pubDate>Mon, 19 Sep 2005 18:58:41 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger oder Referenz? on Mon, 19 Sep 2005 19:12:29 GMT]]></title><description><![CDATA[<p>Vertexwahn schrieb:</p>
<blockquote>
<p>FireFlow schrieb:</p>
<blockquote>
<p>- man spart sich wie bei Pointern den Cpy C'tor.</p>
</blockquote>
<p>verstehe ich nicht - warum spart man sich den?</p>
</blockquote>
<p>Naja bei Built-In Types ist es ja kein Problem, da soll es sogar schneller sein wenn by-value übergibt. Ist doch klar dass wenn man eine Referenz auf eine Klasse übergibt da kein CopyConstructor aufgerufen werden muss weil gar nix kopiert wird. Bei by-value wird ja eine lokale Variable erstellt. Bei einer Container-Klasse ist das weniger gut <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>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/876067</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/876067</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Mon, 19 Sep 2005 19:12:29 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger oder Referenz? on Mon, 19 Sep 2005 19:27:08 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9894">@fireflow</a><br />
das kannst Du mit zeigern genauso mache. Ein Copy-Ctor ist da um etwas zu kopieren. Wenn du kopieren willst/musst, hilft Dir ne Referenz nicht, d.h. die Aussage, dass man sich mit Referenzen den Copy-Ctor spart ist falsch oder zumindest sehr missverständlich.</p>
<blockquote>
<p>Den tieferen Sinn des Copy-Konstruktors habe ich auch nie eingesehen - zumindest nicht bei nicht-trivialen Klassen. Wenn zwei oder mehr Instanzen einer Klasse benotige, die die gleichen Daten enthalten oder sich nur unwesentlich unterscheiden, dann baue ich eher eine weitere Klasse, die die gemeinsamen Daten beinhalten und lasse einen Pointer als Member der Klasse auf die Klasse mit den gemeinsamen Daten zeigen.</p>
</blockquote>
<p>Es ist schon ein semantsicher Unterschied, ob Du zwei Objekte hast, oder ein Objekt mit zwei Referenzen darauf. Wenn Du ein Backup machst, ziehst Du auch nicht einfach ne Verknüpfung auf die CD. Du brauchst ne Möglichkeit einen String zu kopieren. Ok, in Java gibts da dann halt ne spezielle Kopier-Methode. Aber mit dem Copy-Ctor kannst Du's halt so machen, dass es sich bei allen Typen gleich 'natürlich' anfühlt, wie bei nem integer.</p>
<blockquote>
<p>Ich persoenlich arbeite dann lieber mit einem Pointer auf das Object, den ich auch NULL setzen kann, falls dieser nicht gesetzt sein sollte oder konnte.</p>
</blockquote>
<p>Dafür nehm ich zwischenzeitlich boost::optional. Zeiger da, wo sich das referenzierte Objekt ändern kann (z.B. pFreundin <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="😉"
    /> ), es aber immer eines gibt (also doch nicht pFreundin <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>
<p>In Verbindung mit dynamischen Objekten nimmt man am besten keine nackten Zeiger, sondern smart-Pointer.</p>
<p>Also:<br />
Das zu referenzierende Objekt ändert sich nicht -&gt; Referenz<br />
Das zu referenzierende Objekt kann sich ändern ist aber niemals unbelegt -&gt; Zeiger<br />
Das zu referenzierende Objekt kann unbelegt sein -&gt; boost::optional<br />
Es handelt sich um ein dynamisches Objekt, Gültigkeitsdauer und Besitzverhältnisse sind wichig -&gt; entsprechenden smart-Pointer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/876076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/876076</guid><dc:creator><![CDATA[kartoffelsack]]></dc:creator><pubDate>Mon, 19 Sep 2005 19:27:08 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger oder Referenz? on Mon, 19 Sep 2005 19:43:22 GMT]]></title><description><![CDATA[<p>So am Rande: wem der Sinn von Referenzen nicht schlüssig ist sollte sich mal etwas Zeit nehmen und nen richtiges C++ Buch durchlesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/876088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/876088</guid><dc:creator><![CDATA[User---]]></dc:creator><pubDate>Mon, 19 Sep 2005 19:43:22 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger oder Referenz? on Mon, 19 Sep 2005 20:04:16 GMT]]></title><description><![CDATA[<p>kartoffelsack schrieb:</p>
<blockquote>
<blockquote>
<p>Den tieferen Sinn des Copy-Konstruktors habe ich auch nie eingesehen - zumindest nicht bei nicht-trivialen Klassen. Wenn zwei oder mehr Instanzen einer Klasse benotige, die die gleichen Daten enthalten oder sich nur unwesentlich unterscheiden, dann baue ich eher eine weitere Klasse, die die gemeinsamen Daten beinhalten und lasse einen Pointer als Member der Klasse auf die Klasse mit den gemeinsamen Daten zeigen.</p>
</blockquote>
<p>Es ist schon ein semantsicher Unterschied, ob Du zwei Objekte hast, oder ein Objekt mit zwei Referenzen darauf.</p>
</blockquote>
<p>Vielleicht war nicht ganz klar. Mal folgender Fall - eine einfache Bankkontenverwaltung:</p>
<pre><code class="language-cpp">class EinzelKonto
{
    private:

    float    iKontostand;  //in Geldeinheiten
    int      iKontoNr; 

    //und noch mehr Daten zum Konto

    //Ab hier Daten zur Kontoart (Sparbuch, Giro, anlage ...)
    char    *Bezeichnung;
    float    fZinsatz;
    int      iKuendigsfrirst;
    //und noch viel mehr

    //und hier div. Methoden .. 
}
</code></pre>
<p>In jeden Object der Klasse Einzelkonto wiederholen sich Daten, die schon sehr viele Male verwendet wurde - damit wird jede Menge Heap verschwendet. In diesem Falle wuerde ich folgende Loesung machen:</p>
<pre><code class="language-cpp">class EinzelKonto
{
    private:

    float    iKontostand;  //in Geldeinheiten
    int      iKontoNr; 

    //und noch mehr Daten zum Konto

    KontoTyp *pKontoTyp;

}

class KontoTyp
{
    char    *Bezeichnung;
    float    fZinsatz;
    int      iKuendigsfrirst;
    //und noch viel mehr

    //und hier div. Methoden .. 
}
</code></pre>
<p>Sollte ein Konto keinem Typ zuzuordnen sein, so wuerde ein NULL-Pointer erscheinen. Das erspart jede Menge Speicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/876103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/876103</guid><dc:creator><![CDATA[MBCS-CITP]]></dc:creator><pubDate>Mon, 19 Sep 2005 20:04:16 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger oder Referenz? on Mon, 19 Sep 2005 21:57:21 GMT]]></title><description><![CDATA[<p>In Deinem Beispiel ist es schon schön und gut einen Zeiger zu verwenden (obwohl hier aus semantischer Sicht etwas wie boost::optional eigentlich schöner ist, weil NULL letzenendes auch nur irgendeine Magic-Number ist - aber immerhin eine so weit verbreitete, dass es nicht viel dagegen einzuwenden gibt. <a href="http://www.boost.org/libs/optional/doc/optional.html" rel="nofollow">http://www.boost.org/libs/optional/doc/optional.html</a>).</p>
<p>Ich hab mich aber auf Deinen Satz bezogen:</p>
<blockquote>
<p>Den tieferen Sinn des Copy-Konstruktors habe ich auch nie eingesehen - zumindest nicht bei nicht-trivialen Klassen.</p>
</blockquote>
<p>Ein Copy-Ctor hat bei allen Typen, ob trivial oder nicht einen Sinn, nämlich dann, wenn man das Objekt vervielfältigen kann und das hat nix mit ner Referenz zu tun (und der Konto-Typ wird natürlich nicht vervielfältigt, wenn ein neues Konto erzeugt wird, sondern das Konto ist einem aus n endlich vielen Typen zugeordnet). Das einzige, wo sich Copy-Ctor und Referenz 'überschneiden' und in gewisser Hinsicht austauschbar sind, ist beim Funktionsaufruf:</p>
<p>printKonto( const Konto&amp; konto);</p>
<p>oder</p>
<p>printKonto( Konto konto);</p>
<p>Aber in Fall zwei ist es eben ein Konto, das dem orginalen gleicht, aber halt nicht ein und dasselbe Konta, wie es das in Fall 1 ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/876159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/876159</guid><dc:creator><![CDATA[kartoffelsack]]></dc:creator><pubDate>Mon, 19 Sep 2005 21:57:21 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger oder Referenz? on Mon, 19 Sep 2005 23:20:15 GMT]]></title><description><![CDATA[<p>Zunaechst wuerde ich die Printfunktion einfach als Methode der EinzelKonto-Klasse definieren, aber davon abgesehen, was spricht dagegen es so zu machen:</p>
<pre><code class="language-cpp">EinzelKonto::EinzelKonto (EinzelKonto  *pSource = NULL)
{
    if (pSource == NULL)
        SetDefaults ();
    else
    {
        //Uebernimm Werte
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/876177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/876177</guid><dc:creator><![CDATA[MBCS-CITP]]></dc:creator><pubDate>Mon, 19 Sep 2005 23:20:15 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger oder Referenz? on Tue, 20 Sep 2005 07:46:02 GMT]]></title><description><![CDATA[<blockquote>
<p>was spricht dagegen es so zu machen</p>
</blockquote>
<p>prinzipiell: dass das kopieren des Kontos eine andere Syntax hat als das Kopieren eines ints.</p>
<p>int zahl( andereZahl);<br />
Konto( &amp;anderesKonto);</p>
<p>In Deiner Umsetzung: Dass das Orginal verändert werden kann, da ein const fehlt, dass Du Dein Objekt mit 'Konto konto();' initialisieren musst statt, wie man es normalerweise macht mit 'Konto konto;', dass Du keine Initialisierungslisten verwendest ...</p>
<p>Außerdem: Dein Beispiel ist auch eine Art Kopierkonstruktor, nur dass er nicht konventionell ist sondern halt nen Zeiger statt der const Ref kriegt. Du hingegen sagst</p>
<blockquote>
<p>Den tieferen Sinn des Copy-Konstruktors habe ich auch nie eingesehen. Wenn zwei oder mehr Instanzen einer Klasse benotige, die die gleichen Daten enthalten oder sich nur unwesentlich unterscheiden, dann baue ich eher eine weitere Klasse, die die gemeinsamen Daten beinhalten und lasse einen Pointer als Member der Klasse auf die Klasse mit den gemeinsamen Daten zeigen</p>
</blockquote>
<p>du meinst also, dass sich Copy-Ctor und Zeiger irgendwie ersetzen. Tun sie aber nicht. Sind völlig verschiedene Dinge.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/876302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/876302</guid><dc:creator><![CDATA[kartoffelsack]]></dc:creator><pubDate>Tue, 20 Sep 2005 07:46:02 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger oder Referenz? on Tue, 20 Sep 2005 08:53:58 GMT]]></title><description><![CDATA[<p>kartoffelsack schrieb:</p>
<blockquote>
<p>In Deiner Umsetzung: Dass das Orginal verändert werden kann, da ein const fehlt, dass Du Dein Objekt mit 'Konto konto();' initialisieren musst statt, wie man es normalerweise macht mit 'Konto konto;'</p>
</blockquote>
<p>nein, Einzelkonto ist ja kein POD. Im übrigen ist dein Vorschlag eine Funktionsdeklaration.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/876349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/876349</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 20 Sep 2005 08:53:58 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger oder Referenz? on Tue, 20 Sep 2005 09:06:40 GMT]]></title><description><![CDATA[<blockquote>
<p>nein, Einzelkonto ist ja kein POD. Im übrigen ist dein Vorschlag eine Funktionsdeklaration.</p>
</blockquote>
<p>ok, sorry, einen Ctor mit Standard-Wert 'EinzelKonto::EinzelKonto (EinzelKonto *pSource = NULL)' kann/muss man offensichtlich mit 'Einzelkonto konto;' (also ohne '()') aufrufen. Ändert aber nix am Rest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/876358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/876358</guid><dc:creator><![CDATA[kartoffelsack]]></dc:creator><pubDate>Tue, 20 Sep 2005 09:06:40 GMT</pubDate></item></channel></rss>