<?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[Wieder der Copy-Konstruktor]]></title><description><![CDATA[<p>Hallo Leute!</p>
<p>Den Sinn eines Copy-Konstruktor hab ich jetzt verstanden auch wie er arbeitet.</p>
<p>17 // copy Konstruktor<br />
18 C::C (const C&amp; c)&lt;---- Kann mir jemand diese Zeile erklären?? vor allem die Argumente verwirren mich ( (const C&amp; und die variable))</p>
<p>19 : m_x(c.m_x),<br />
20 m_y(c.m_y)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/160212/wieder-der-copy-konstruktor</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 06:04:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/160212.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 23 Sep 2006 06:35:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sat, 23 Sep 2006 08:40:04 GMT]]></title><description><![CDATA[<p>Hallo Leute!</p>
<p>Den Sinn eines Copy-Konstruktor hab ich jetzt verstanden auch wie er arbeitet.</p>
<p>17 // copy Konstruktor<br />
18 C::C (const C&amp; c)&lt;---- Kann mir jemand diese Zeile erklären?? vor allem die Argumente verwirren mich ( (const C&amp; und die variable))</p>
<p>19 : m_x(c.m_x),<br />
20 m_y(c.m_y)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1142934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1142934</guid><dc:creator><![CDATA[muhi]]></dc:creator><pubDate>Sat, 23 Sep 2006 08:40:04 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sat, 23 Sep 2006 07:33:05 GMT]]></title><description><![CDATA[<p>muhi schrieb:</p>
<blockquote>
<p>17 // copy Konstruktor &lt;---- Kann mir jemand diese Zeile erklären??</p>
</blockquote>
<p>Kommentar???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1142942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1142942</guid><dc:creator><![CDATA[Computerbücher für 1,- Eu]]></dc:creator><pubDate>Sat, 23 Sep 2006 07:33:05 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sat, 23 Sep 2006 07:36:43 GMT]]></title><description><![CDATA[<p>sinn:</p>
<p>wenn du zum bleistift zeiger in deiner klasse hast, die im konstruktor mit new initialisiert werden und im destruktor wird delete aufgerufen, und wenn du eine kopie eines objektes zulassen möchtest, musst du dir gedanken über <strong>die flache kopie versus die tiefe kopie</strong> machen.</p>
<p>den kopierkonstruktor gibt es immer. er ist .. auch wenn du ihn nicht implementierst.. für dich da und macht eine flache kopie des objektes.</p>
<pre><code>Person peter;
Person paul = peter; //Person paul(peter);
</code></pre>
<p>was aber, wenn du im konstruktor mit new einen weiter bereich alloziert hast? dann kopiert die flache kopie nur die zeigeradresse, und peter wie paul zeigen auf die gleiche stelle. damit wird zweimal über der gleichen stelle delete aufgerufen .. schlecht.</p>
<p>die &quot;regel der großen drei&quot; besagt: benötigt eine klasse einen der großen drei: kopierkonstruktor, destruktor oder zuweisungsoperator, dann müssen die anderen beiden auch implementiert werden.</p>
<p>les dazu auf hume sikkins seite oder in entsprechenden tutorials.</p>
<p>so long</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1142943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1142943</guid><dc:creator><![CDATA[elise]]></dc:creator><pubDate>Sat, 23 Sep 2006 07:36:43 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sat, 23 Sep 2006 08:55:13 GMT]]></title><description><![CDATA[<p>Ja nur in dem Beispiel aus dem ich diesen Codeschnipsel kopiert habe, wird auch kein neuer Speicher allokiert.</p>
<p>@Computerbücher für einen euro:</p>
<p>Ja sry ich hab den Fehler bereits ausgebessert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1142962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1142962</guid><dc:creator><![CDATA[muhi]]></dc:creator><pubDate>Sat, 23 Sep 2006 08:55:13 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sat, 23 Sep 2006 09:02:26 GMT]]></title><description><![CDATA[<p>K das einzige was ich noch wissen will, wieso hier der Adress-Operator &quot;&amp;&quot; in der Argumentliste steht.<br />
Soll das heissen, dass hier auf die Adresse der Klassendefiniton von C verwiesen wird um anzugeben dass es sich hier um ein Objekt dieser Art handelt?</p>
<p>Thx</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1142966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1142966</guid><dc:creator><![CDATA[muhi]]></dc:creator><pubDate>Sat, 23 Sep 2006 09:02:26 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sat, 23 Sep 2006 09:05:36 GMT]]></title><description><![CDATA[<p>naja, const sagt an dieser stelle nur &quot;ich verändere das übergebene objekt nicht&quot;</p>
<p>C&amp; das ist nicht der adressoperator sondern der reference operator. also das objekt wird als reference übergeben und nicht als kopie..sagt dir call by reference und call by value etwas?</p>
<p>und naja die varibale bestimmt ja nur den namen des übergebenen objekts</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1142967</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1142967</guid><dc:creator><![CDATA[ConfusedGuy]]></dc:creator><pubDate>Sat, 23 Sep 2006 09:05:36 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sat, 23 Sep 2006 09:29:08 GMT]]></title><description><![CDATA[<p>muhi schrieb:</p>
<blockquote>
<p>Ja nur in dem Beispiel aus dem ich diesen Codeschnipsel kopiert habe, wird auch kein neuer Speicher allokiert....</p>
</blockquote>
<p>Ich weiß jetzt nicht, welche &quot;Speicherallokation&quot; Du meinst.<br />
Wenn Du aber meinst, ein CopyCtor sollte Speicher für das Objekt selbst (hier also &quot;ein C&quot;) allokieren: Braucht er nicht !! Der CpyCtor wird erst aufgerufen, wenn der Speicher für ein neues Objekt bereits allokiert wurde !<br />
Es wird auch nicht der CpyCtor des &quot;alten&quot;, sondern der des &quot;neue Objektes&quot; aufgerufen.</p>
<pre><code class="language-cpp">class C {
int i;
public:
    C() : i(0) {}
    C(C const&amp; c) : i(c.i) {
        c.i = 2; // ---&gt; FEHLER !!! geht nicht wegen &quot;const&quot;
    }
    void seti(int a) {i = a; }
};

int main() {
    C c1; // c1.i == 0
    c1.seti(1);    // c1.i == 1
    C c2(c);    // allokiert erst Speicher für c2 und 
        // ruft dann (implizit) c2.C(c1); (== CpyCtor) auf
        // =&gt; c2.i == 1
...
</code></pre>
<p>Wenn C jetzt &quot;Heapspeicher&quot; für seine Variablen braucht (sprich: &quot;irgendwo ein new/delete macht)), muß das wahrscheinlich im CpyCtor auch passieren.</p>
<p>muhi schrieb:</p>
<blockquote>
<p>K das einzige was ich noch wissen will, wieso hier der Adress-Operator &quot;&amp;&quot; in der Argumentliste steht....</p>
</blockquote>
<p>Naja, wenn da kein &quot;&amp;&quot; stände, würde der Compiler eine weitere (&quot;temporäre&quot;) Kopie von c1 anlegen, um die dann dem CpyCtor von c2 zu übergeben. Das wäre einerseits unnötig/zeitraubend und andererseits sehe ich da irgendwie &quot;rekursive Probleme&quot; beim CpyCtor (muß ich mal ausprobieren) (schließlich wird das temporäre Objekt ja selbst auch wieder per CpyCtor erzeugt, für desse n Aufruf ja eine andere Temporäre Kopie erzeugt werden muß, für die der CpyCtor aufgerufen wird, für ....)</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1142976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1142976</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sat, 23 Sep 2006 09:29:08 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sat, 23 Sep 2006 09:33:11 GMT]]></title><description><![CDATA[<p>Sowas war gemeint:</p>
<pre><code class="language-cpp">class foo
{
private:
	int *xyz;

public:
	foo()
		: xyz( new int( 10 ) )
	{}

	~foo()
	{
		delete xyz;
	}

	void set( int num )
	{
		*xyz = num;
	}

	int get() const
	{
		return *xyz;
	}
};

int main()
{
	foo bar;
	bar.set( 50 );
	foo foobar( bar );
	foobar.set( 70 );
	std::cout &lt;&lt; bar.get() &lt;&lt; &quot; &quot; &lt;&lt; foobar.get(); // Ausgabe 70 70
} // Fehler beim zerstören von foobar
</code></pre>
<p>Die Lösung ist also ein Copy C'tor der auch <em>xyz</em> korrekt kopiert.</p>
<pre><code class="language-cpp">foo( const foo &amp;other )
{
	// selbstzuweisung testen, etc...
	xyz = new int( *other.xyz );
}
</code></pre>
<p>Dann passts.</p>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1142980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1142980</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Sat, 23 Sep 2006 09:33:11 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sat, 23 Sep 2006 10:19:47 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">foo( const foo &amp;other )
{
    // selbstzuweisung testen, etc...
    xyz = new int( *other.xyz );
}
</code></pre>
<p>dazu hab ich auch ne kleine kurze Frage. Den Stern bei *other.xyz muss man setzen, weil xyz ein Zeiger ist, richtig?</p>
<p>Weil other ist ja eine Referenz, da braucht man die Dereferenzierung ja nicht. Also wegen xyz oder?</p>
<p>Und was wäre, wenn man den Stern weglassen würde? Wurde man dann mit der Adresse von xyz arbeiten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1142995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1142995</guid><dc:creator><![CDATA[deetee]]></dc:creator><pubDate>Sat, 23 Sep 2006 10:19:47 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sat, 23 Sep 2006 10:32:10 GMT]]></title><description><![CDATA[<p>Ok ich versteh gar nix mehr ich glaub ich gebs auf...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1142997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1142997</guid><dc:creator><![CDATA[muhi]]></dc:creator><pubDate>Sat, 23 Sep 2006 10:32:10 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sat, 23 Sep 2006 10:39:55 GMT]]></title><description><![CDATA[<p>deetee schrieb:</p>
<blockquote>
<pre><code class="language-cpp">foo( const foo &amp;other )
{
    // selbstzuweisung testen, etc...
    xyz = new int( *other.xyz );
}
</code></pre>
<p>dazu hab ich auch ne kleine kurze Frage. Den Stern bei *other.xyz muss man setzen, weil xyz ein Zeiger ist, richtig?</p>
<p>Weil other ist ja eine Referenz, da braucht man die Dereferenzierung ja nicht. Also wegen xyz oder?</p>
<p>Und was wäre, wenn man den Stern weglassen würde? Wurde man dann mit der Adresse von xyz arbeiten?</p>
</blockquote>
<p>So isses!</p>
<p>muhi schrieb:</p>
<blockquote>
<p>Ok ich versteh gar nix mehr ich glaub ich gebs auf...</p>
</blockquote>
<p>Was verstehst du denn nicht?</p>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143001</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Sat, 23 Sep 2006 10:39:55 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sat, 23 Sep 2006 11:37:30 GMT]]></title><description><![CDATA[<p>muhi schrieb:</p>
<blockquote>
<p>Ok ich versteh gar nix mehr ich glaub ich gebs auf...</p>
</blockquote>
<p>Ist gar nicht so schwer:<br />
- Was ist &quot;other&quot; ? Richtig: &quot;const foo &amp;&quot; = eine (const-)Referenz; d.h. man kann auf other genauso zugreifen wie auf ein &quot;normales Objekt&quot;: other.xyz.<br />
- Was ist xyz ? Richitg: Ein &quot;int* &quot; = ein Zeiger; d.h. man greift auf den Speicherplatz, auf den er zeigt mit * oder -&gt; zu: *xyz = 3<br />
- Wie greift man auf xyz von other zu ? Richtig: other.xyz<br />
- Wie greift man auf den Speicherplatz, auf den other.xyz verweist zu ? Richtig: *(other.xyz) oder (wenn man die Operatorenreihenfolge beachtet - man braucht keine Klammern) *other.xyz</p>
<p>Etwas verwirrend wirkt wahrscheinlich, weil es so aussieht, als bezöge sich * auf other (sowas wie <em>other) ... tut's aber nicht <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="😉"
    /><br />
Es bezieht sich auch xyz; so in der Art &quot;</em>_____.xyz&quot;.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143026</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sat, 23 Sep 2006 11:37:30 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sat, 23 Sep 2006 11:54:32 GMT]]></title><description><![CDATA[<p>Worauf ist bei X(X&amp; c) die Referenz gereichtet?</p>
<p>Wies funzt hier denn kein call by value?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143038</guid><dc:creator><![CDATA[muhi]]></dc:creator><pubDate>Sat, 23 Sep 2006 11:54:32 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sat, 23 Sep 2006 12:16:43 GMT]]></title><description><![CDATA[<p>c ist eine reference auf das übergebene objekt oder auch ein anderer name für das übergebene objekt. du arbeitest also direkt mit dem übergebenem objekt vom typ X</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143042</guid><dc:creator><![CDATA[ConfusedGuy]]></dc:creator><pubDate>Sat, 23 Sep 2006 12:16:43 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sat, 23 Sep 2006 12:21:31 GMT]]></title><description><![CDATA[<p>Moment mal, das heisst es ist zwingend dass alle Objekte die durch den Copycon erzeugt werden eine Ref auf das ursprungsobjekt ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143046</guid><dc:creator><![CDATA[muhi]]></dc:creator><pubDate>Sat, 23 Sep 2006 12:21:31 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sat, 23 Sep 2006 12:31:27 GMT]]></title><description><![CDATA[<p>eh nun verwirrst du mich etwas.</p>
<p>also ein CopyCon kopiert das übergebene objekt und man hat am ende dann zwei objekte. das zu kopierende und einmal die kopie.</p>
<p>sie sind damit von einander unabhängig und wenn du das eine löschst ist das andere noch vorhanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143049</guid><dc:creator><![CDATA[ConfusedGuy]]></dc:creator><pubDate>Sat, 23 Sep 2006 12:31:27 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sat, 23 Sep 2006 12:32:50 GMT]]></title><description><![CDATA[<p>Im CTor sitzt Du im inneren des Kopiergerätest und das übergebene Objekt ist das Baltt , welches oben auf der Glasblatte liegt und kopiert werden möchte <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/1143050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143050</guid><dc:creator><![CDATA[Knuddlbaer]]></dc:creator><pubDate>Sat, 23 Sep 2006 12:32:50 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sat, 23 Sep 2006 13:18:02 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class A{
public:
    A(): i( new int(1));
    ~A();
    setI( int in){
       *i = in;
    }

private:
    int *i;
};

A::~A(){
delete i;
}

// so könnte dann der copyconst vom compiler genereiert aussehen
A::A( const A&amp; src){
  i = src.i; //kopiert also den zeiger 
             //this.i und src.i zeigen also nun auf den gleichen
             //speicherbereiche  ( flache kopie )
}

///////////////////////////
//mit geschriebenem copyconst
class B{
public:
B():i( new int(1));
~B();
B(const B&amp; src );

    setI( int in){
       *i = in;
    }

private:
int *i;
};

B::~B(){
   delte i;
}

B::B(const B&amp; src){
 if( this != &amp;src ){   //überprüfen ob zuweisung an sich selbst
     i = new Int(1);   //neuen speicher alloziieren
     *i = *(src.i);    //kopiere den wert
                       //src.i und this.i zeigen auf unterschiedlichen speicher
                       //tiefe kopie
  }
}
</code></pre>
<p>das wäre dann nen prog:</p>
<pre><code class="language-cpp">int main{
A* a1 = new A();
a1-&gt;setI(234);
A *a2( a1 );
a2-&gt;setI( 9876 );

// nun ist auch *(a1.i) == 9876
delete a1;

a2-&gt;setI( 21 ); // error der pointer von i zeigt nämlich nun in nicht
                //alloziierten speicher, der wurde nämlich mit dem zerstören von a1 wieder 
                //freigegeben

B * b1 = new B();
b1-&gt;setI( 45 );
B *b2 = new B(b1);
b2-&gt;setI( 565 );
// *(b1.i) ist immer noch 45

delete b1;

b2-&gt;setI(45677); //geht ohne weiteres. der pointer ist immer noch ok, da er auf
                 //seinen eigenen speicherbereiche zeigt

return 0;
}
</code></pre>
<p>so ich hoffe das hilft</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143065</guid><dc:creator><![CDATA[ConfusedGuy]]></dc:creator><pubDate>Sat, 23 Sep 2006 13:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sat, 23 Sep 2006 13:10:06 GMT]]></title><description><![CDATA[<p>aso ja stimmt sry, trotzdem wieso funzt hier kein normales call by value??</p>
<p>EDIT: is keine antwort auf vorposter hab gar nur zu spät gepostet-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143066</guid><dc:creator><![CDATA[muhi]]></dc:creator><pubDate>Sat, 23 Sep 2006 13:10:06 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sat, 23 Sep 2006 13:13:36 GMT]]></title><description><![CDATA[<p>wenn ich mich nicht täusche MUSS der CopyConst diese Signatur haben.</p>
<p>Klasse::Klasse( const Klasse&amp; src){}</p>
<p>dabei ist src natürlich nur ein bezeichner und kann auch anders lauten</p>
<p>wäre es nämlich keine reference sondern ein call by value würdest du das objekt erstmal beim übergeben kopieren und dann nochmals innerhalb deines kopierkonstruktors.</p>
<p>nun stelle dir mal eine super komplexe klasse vor die mehr als 10000 andere objekt enthält die wiederum etwas komplexer sind.</p>
<p>und nun male dir mal aus weöche performance auswirkungen es hätte jedesmal alle objekte 2 mal zu kopieren...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143068</guid><dc:creator><![CDATA[ConfusedGuy]]></dc:creator><pubDate>Sat, 23 Sep 2006 13:13:36 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sat, 23 Sep 2006 13:32:38 GMT]]></title><description><![CDATA[<p>ConfusedGuy schrieb:</p>
<blockquote>
<p>wenn ich mich nicht täusche MUSS der CopyConst diese Signatur haben.</p>
<p>Klasse::Klasse( const Klasse&amp; src){}</p>
</blockquote>
<p>Du täuschst dich. Korrekt ist, dass der Copy-Ctor einen Referenz-Parameter erhalten muss. Dabei ist aber egal, ob das Ziel der Referenz als const, volatile, const volatile oder nichts von alledem angesehen werden soll.</p>
<blockquote>
<p>wäre es nämlich keine reference sondern ein call by value würdest du das objekt erstmal beim übergeben kopieren und dann nochmals innerhalb deines kopierkonstruktors.<br />
[...]<br />
und nun male dir mal aus weöche performance auswirkungen es hätte jedesmal alle objekte 2 mal zu kopieren...</p>
</blockquote>
<p>Es käme noch viel schlimmer, da du nicht zweimal sondern bis in alle Ewigkeit kopieren würdest. Beim &quot;by value&quot;-Aufruf wird eine Kopie erzeugt. Für das Erzeugen einer Kopie wird der Copy-Ctor verwendet. Würde der Copy-Ctor seinen Parameter &quot;by value&quot; übernehmen, müsste beim Aufruf des Copy-Ctors erstmal wieder eine Kopie erzeugt werden. Das würde wieder den Copy-Ctor aufrufen, wobei wieder eine Kopie erzeugt werden müsset, was wieder den Copy-Ctor aufrufen würde... und so weiter ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143075</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Sat, 23 Sep 2006 13:32:38 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sat, 23 Sep 2006 13:35:58 GMT]]></title><description><![CDATA[<p>ah gut, dann habe ich ja auch noch was gelernt <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="🙂"
    /><br />
danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143076</guid><dc:creator><![CDATA[ConfusedGuy]]></dc:creator><pubDate>Sat, 23 Sep 2006 13:35:58 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sat, 23 Sep 2006 20:08:13 GMT]]></title><description><![CDATA[<p>und ich auch. danke. <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/1143238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143238</guid><dc:creator><![CDATA[deetee]]></dc:creator><pubDate>Sat, 23 Sep 2006 20:08:13 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Sun, 24 Sep 2006 11:21:30 GMT]]></title><description><![CDATA[<p>HumeSikkins schrieb:</p>
<blockquote>
<p>...<br />
Es käme noch viel schlimmer, da du nicht zweimal sondern bis in alle Ewigkeit kopieren würdest....</p>
</blockquote>
<p>Schön, habe ich also recht vermutet. (Habe ich aber noch nirgendwo gelesen ... sollte man vielleicht mal aufschreiben).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143400</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sun, 24 Sep 2006 11:21:30 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Mon, 25 Sep 2006 08:58:58 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13624">@Simon2</a><br />
Ist ja letztlich irrelevant, da eine Signatur wie:</p>
<pre><code class="language-cpp">Foo(Foo f);
</code></pre>
<p>schlicht nicht erlaubt ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143840</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Mon, 25 Sep 2006 08:58:58 GMT</pubDate></item><item><title><![CDATA[Reply to Wieder der Copy-Konstruktor on Mon, 25 Sep 2006 10:58:35 GMT]]></title><description><![CDATA[<p>HumeSikkins schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13624">@Simon2</a><br />
Ist ja letztlich irrelevant, da eine Signatur wie:</p>
<pre><code class="language-cpp">Foo(Foo f);
</code></pre>
<p>schlicht nicht erlaubt ist.</p>
</blockquote>
<p>Aber ich finde es immer besser, wenn ich einen konkreten Grund sehe, warum etwas nicht erlaubt ist. Kann ich mir einfach leichter merken, wenn es plausibel ist.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143943</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 25 Sep 2006 10:58:35 GMT</pubDate></item></channel></rss>