<?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[Copykonstruktor wird bei Zuweisung verwendet]]></title><description><![CDATA[<p>Hallo allerseits!</p>
<p>Bin mal auf euer Forum gestoßen, was mir grade recht kam, weil ich hier bei meinem Übungsprogramm eine Sache einfach nicht verstehe. Ich hab auch mit der SuFu hier nichts gefunden, was mir meine Frage beantwortet hat.</p>
<p>Also in dem Programm geht es darum, eine Klasse zu verwalten, deren Objekte jeweils ein double Array und die Feldlänge enthalten.<br />
Ich übe gerade generell das Überladen von Operatoren und habe für dieses Programm mal folgende Operatoren überladen:<br />
- Den Zuweisungsoperator<br />
- Subscriptoperator<br />
- Ausgabeoperator<br />
- Inkrementoperator (Postfix und Prefix)</p>
<p>Das Programm funktioniert auch soweit schon, aber eine Sache lässt mir hier keine Ruhe:</p>
<p>Ich weis, dass der Copykonstruktor immer für Ausdrücke wie<br />
Klasse Objekt_2 = Objekt_1<br />
oder<br />
Klasse Objekt_2(Objekt_1)<br />
zuständig ist. Aber für normale Zuweisungen mitten im Programm sollte doch eigentlich ausschließlich der Zuweisungsoperator arbeiten oder?<br />
Die Frage hat sich bei mir aufgetan, als ich bemerkt hab, dass bei einem Ausdruck wie<br />
Objekt2 = Objekt1++;<br />
mein Zuweisungsoperator, dann der ++ Operator, und seltsamerweise davor UND danach auch noch der Copykonstruktor arbeiten. Ist das normal? Und wenn ja, warum muss der Copykonstruktor bei so einer Aktion gleich zweimal einspringen?</p>
<p>Irgendwie komm ich bei der Überlegung nicht weiter - hat hier vielleicht jemand eine Antwort? Ich hab nämlich eher das Gefühl, dass hier eher in dem Programm was schief läuft, denn den Copykonstruktor gleich zweimal für eine Aktion aufzurufen, für die erdoch eigentlich nicht zuständig ist (?), wäre doch eher unnötig.</p>
<p>Irgendwie hab ichs nicht geschafft hier Spoiler reinzubekommen - darum, so leids mir tut, post ich mal den code direkt hier rein...die Kommentare sind für euch evtl überflüssig aber nja - ich mahc das noch ent wirklich lang <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>safar.h:</p>
<pre><code class="language-cpp">#ifndef SAFAR_H_INCLUDED
#define SAFAR_H_INCLUDED

#include &lt;iostream&gt;

using namespace std;

class Array
{
	private:
		double *array;								//	Adressen der gespeicherten Daten im Array - der einzelnen Objekte
		int size;							//	Größe des Arrays

	public:
		Array(int size = 0);						//	Konstruktor - kann Array auch mit gegebenen Defaultwerten inizialisieren
		Array(const Array &amp;original);				//	Copykonstruktor

		~Array();									//	Destruktor

		Array operator=(const Array &amp;array_r);			//	Überladung des Zuweisungsoperators
//		Array operator+=(const Array &amp;ar_r);		//	Überladung des += Operators
		Array operator++();							//	Überladung des ++ Operators als Präfix
		Array operator++(int);						//	Überladung des ++ Operators als Postfix

		double &amp; operator[](const int size);				//	Überladung des Subscriptoperators

		friend ostream &amp;operator&lt;&lt;(ostream &amp;os, const Array &amp;array);	//	Überladung des Ausgabeoperators
};

#endif // SAFAR_H_INCLUDED
</code></pre>
<p>safar.cpp:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;safar.h&quot;

using namespace std;

///////////////////////////////////////////////////////////////////////////////////////////////
//	Konstruktoren
/////////////////////////////////////////////////////////////////////////////////////////////

//	Konstruktor mit Defaultwerten zu Inizialisierung des Arrays:
Array::Array(const int size)
{
	if(size &gt; 0)
	{
		this-&gt;size = size;
		this-&gt;array = new double[size];				//	[], weil hier ein numerischer Wert benötigt wird, und KEIN Ausdruck!

		for(int i = 0; i &lt; size; i++)
		{
			this-&gt;array[i] = 0.0;
		}
	}
	else
	{
		this-&gt;array = NULL;
		this-&gt;size = 0;
	}
}

//	Copykonstruktor:
Array::Array(const Array &amp;original)
{
	if(original.size &gt; 0)
	{
		this-&gt;array = new double[original.size];
		this-&gt;size = original.size;
//	memcpy kopiert den als Parameter 2 angegebenen Speicherbereich samt enthaltener Daten an den in PArameter 1 angegebenen Zielbereich.
//	Parameter 3 ist die zu kopierende Größe in Byte und muss zur Verhinderung von Überlappungen der SPeicherbereiche angegeben werden; memcpy erfordert die Inkludierung von string.h:
		memcpy(this-&gt;array, original.array, this-&gt;size * sizeof(double));
	}
	else
	{
		this-&gt;array = NULL;
		this-&gt;size = 0;
	}

	cout &lt;&lt; &quot;\nCopyconstruktor...\n&quot;;
}

///////////////////////////////////////////////////////////////////////////////////////////////
//	Destruktor
/////////////////////////////////////////////////////////////////////////////////////////////

Array::~Array()
{
	if(this-&gt;array != NULL)
	{
		delete []this-&gt;array;
	}
	cout &lt;&lt; &quot;\nDestruct...\n&quot;;
}

///////////////////////////////////////////////////////////////////////////////////////////////
//	Operatorfunktionen
/////////////////////////////////////////////////////////////////////////////////////////////

//	Überladung des Zuweisungsoperators:
Array Array::operator=(const Array &amp;array_r)
{
	if(this == &amp;array_r)
	{
		return *this;
	}

	if(&amp;array_r != NULL)
	{
		if(this-&gt;array != NULL)
		{
			delete []this-&gt;array;
		}

		this-&gt;size = array_r.size;
		this-&gt;array = new double[this-&gt;size];
		memcpy(this-&gt;array, array_r.array, this-&gt;size * sizeof(double));
	}
	else
	{
		this-&gt;array = NULL;
		this-&gt;size = 0;
	}

	cout &lt;&lt; &quot;\nZuweisungsoperator...\n&quot;;
	return *this;
}

//	Überladung des ++ Operators als Prefix (++Operand):
Array Array::operator++()
{
	for(int i = 0; i &lt; this-&gt;size; i++)
	{
		++this-&gt;array[i];
	}

	cout &lt;&lt; &quot;\nPREfix...\n&quot;;
	return *this;
}

//	Überladung des ++ Operators als Postfix (Operand++):

Array Array::operator++(int)
{
	Array tmp = *this;
	for(int i = 0; i &lt; this-&gt;size; i++)
	{
		tmp.array[i]++;
	}

	cout &lt;&lt; &quot;\nPOSTfix...\n&quot;;
	return tmp;
}

//	Überladung des Subscriptoperators [] zur Überprüfung auf Bereichsüberschreitung beim Indizieren eines Arrays:
double &amp; Array::operator[](const int i)
{
	static double overFlow;

	if((i &gt;= 0) &amp;&amp; (i &lt; this-&gt;size))
	{
		return array[i];
	}
	else
	{
		return overFlow;
	}
}

//	Überladung &lt;&lt; Operators zur benutzerdefinierten Ausgabe auf std::cout:
ostream &amp;operator&lt;&lt;(ostream &amp;os, const Array &amp;array)
{
	cout &lt;&lt; &quot;\nInhalt von Array:\n&quot;;
	for(int i = 0; i &lt; array.size; i++)
	{
		os &lt;&lt; &quot;[&quot; &lt;&lt; i &lt;&lt; &quot;]:  &quot; &lt;&lt; array.array[i] &lt;&lt; ' ';
	}

	return os;
}
</code></pre>
<p>safar_main.cpp:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;safar.h&quot;

using namespace std;

int main()
{
	Array a1(3);
	Array a2;

	a1[0] = 1; a1[1] = 1.5; a1[2] = 2;

	cout &lt;&lt; &quot;\na1:\t&quot; &lt;&lt; a1;
	cout &lt;&lt; &quot;\na2:\t&quot; &lt;&lt; a2;

	a2 = a1++;

	cout &lt;&lt; &quot;\na1:\t&quot; &lt;&lt; a1;
	cout &lt;&lt; &quot;\na2:\t&quot; &lt;&lt; a2;

	a1 = ++a2;

	cout &lt;&lt; &quot;\na1:\t&quot; &lt;&lt; a1;
	cout &lt;&lt; &quot;\na2:\t&quot; &lt;&lt; a2;

	Array a3 = a2;
	a2 = a1;

	return 0;
}
</code></pre>
<p>Wie gesagt, das Ding funktioniert scheinbar soweit - zumindest tut es, was es tun soll. Mir geht es hierbei auch nicht darum, das Programm effizienter oder lesbarer zu schreiben - ich bin mir nur nicht sicher, warum dieses Phänomen mit dem Copykonstruktor dort auftritt, wo ich nicht damit gerechnet hätte.</p>
<p>Danke euch jetzt schonmal für eure Hilfe,<br />
Schönen Abend noch</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/273182/copykonstruktor-wird-bei-zuweisung-verwendet</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 10:05:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/273182.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 01 Sep 2010 18:20:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Copykonstruktor wird bei Zuweisung verwendet on Wed, 01 Sep 2010 18:20:33 GMT]]></title><description><![CDATA[<p>Hallo allerseits!</p>
<p>Bin mal auf euer Forum gestoßen, was mir grade recht kam, weil ich hier bei meinem Übungsprogramm eine Sache einfach nicht verstehe. Ich hab auch mit der SuFu hier nichts gefunden, was mir meine Frage beantwortet hat.</p>
<p>Also in dem Programm geht es darum, eine Klasse zu verwalten, deren Objekte jeweils ein double Array und die Feldlänge enthalten.<br />
Ich übe gerade generell das Überladen von Operatoren und habe für dieses Programm mal folgende Operatoren überladen:<br />
- Den Zuweisungsoperator<br />
- Subscriptoperator<br />
- Ausgabeoperator<br />
- Inkrementoperator (Postfix und Prefix)</p>
<p>Das Programm funktioniert auch soweit schon, aber eine Sache lässt mir hier keine Ruhe:</p>
<p>Ich weis, dass der Copykonstruktor immer für Ausdrücke wie<br />
Klasse Objekt_2 = Objekt_1<br />
oder<br />
Klasse Objekt_2(Objekt_1)<br />
zuständig ist. Aber für normale Zuweisungen mitten im Programm sollte doch eigentlich ausschließlich der Zuweisungsoperator arbeiten oder?<br />
Die Frage hat sich bei mir aufgetan, als ich bemerkt hab, dass bei einem Ausdruck wie<br />
Objekt2 = Objekt1++;<br />
mein Zuweisungsoperator, dann der ++ Operator, und seltsamerweise davor UND danach auch noch der Copykonstruktor arbeiten. Ist das normal? Und wenn ja, warum muss der Copykonstruktor bei so einer Aktion gleich zweimal einspringen?</p>
<p>Irgendwie komm ich bei der Überlegung nicht weiter - hat hier vielleicht jemand eine Antwort? Ich hab nämlich eher das Gefühl, dass hier eher in dem Programm was schief läuft, denn den Copykonstruktor gleich zweimal für eine Aktion aufzurufen, für die erdoch eigentlich nicht zuständig ist (?), wäre doch eher unnötig.</p>
<p>Irgendwie hab ichs nicht geschafft hier Spoiler reinzubekommen - darum, so leids mir tut, post ich mal den code direkt hier rein...die Kommentare sind für euch evtl überflüssig aber nja - ich mahc das noch ent wirklich lang <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>safar.h:</p>
<pre><code class="language-cpp">#ifndef SAFAR_H_INCLUDED
#define SAFAR_H_INCLUDED

#include &lt;iostream&gt;

using namespace std;

class Array
{
	private:
		double *array;								//	Adressen der gespeicherten Daten im Array - der einzelnen Objekte
		int size;							//	Größe des Arrays

	public:
		Array(int size = 0);						//	Konstruktor - kann Array auch mit gegebenen Defaultwerten inizialisieren
		Array(const Array &amp;original);				//	Copykonstruktor

		~Array();									//	Destruktor

		Array operator=(const Array &amp;array_r);			//	Überladung des Zuweisungsoperators
//		Array operator+=(const Array &amp;ar_r);		//	Überladung des += Operators
		Array operator++();							//	Überladung des ++ Operators als Präfix
		Array operator++(int);						//	Überladung des ++ Operators als Postfix

		double &amp; operator[](const int size);				//	Überladung des Subscriptoperators

		friend ostream &amp;operator&lt;&lt;(ostream &amp;os, const Array &amp;array);	//	Überladung des Ausgabeoperators
};

#endif // SAFAR_H_INCLUDED
</code></pre>
<p>safar.cpp:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;safar.h&quot;

using namespace std;

///////////////////////////////////////////////////////////////////////////////////////////////
//	Konstruktoren
/////////////////////////////////////////////////////////////////////////////////////////////

//	Konstruktor mit Defaultwerten zu Inizialisierung des Arrays:
Array::Array(const int size)
{
	if(size &gt; 0)
	{
		this-&gt;size = size;
		this-&gt;array = new double[size];				//	[], weil hier ein numerischer Wert benötigt wird, und KEIN Ausdruck!

		for(int i = 0; i &lt; size; i++)
		{
			this-&gt;array[i] = 0.0;
		}
	}
	else
	{
		this-&gt;array = NULL;
		this-&gt;size = 0;
	}
}

//	Copykonstruktor:
Array::Array(const Array &amp;original)
{
	if(original.size &gt; 0)
	{
		this-&gt;array = new double[original.size];
		this-&gt;size = original.size;
//	memcpy kopiert den als Parameter 2 angegebenen Speicherbereich samt enthaltener Daten an den in PArameter 1 angegebenen Zielbereich.
//	Parameter 3 ist die zu kopierende Größe in Byte und muss zur Verhinderung von Überlappungen der SPeicherbereiche angegeben werden; memcpy erfordert die Inkludierung von string.h:
		memcpy(this-&gt;array, original.array, this-&gt;size * sizeof(double));
	}
	else
	{
		this-&gt;array = NULL;
		this-&gt;size = 0;
	}

	cout &lt;&lt; &quot;\nCopyconstruktor...\n&quot;;
}

///////////////////////////////////////////////////////////////////////////////////////////////
//	Destruktor
/////////////////////////////////////////////////////////////////////////////////////////////

Array::~Array()
{
	if(this-&gt;array != NULL)
	{
		delete []this-&gt;array;
	}
	cout &lt;&lt; &quot;\nDestruct...\n&quot;;
}

///////////////////////////////////////////////////////////////////////////////////////////////
//	Operatorfunktionen
/////////////////////////////////////////////////////////////////////////////////////////////

//	Überladung des Zuweisungsoperators:
Array Array::operator=(const Array &amp;array_r)
{
	if(this == &amp;array_r)
	{
		return *this;
	}

	if(&amp;array_r != NULL)
	{
		if(this-&gt;array != NULL)
		{
			delete []this-&gt;array;
		}

		this-&gt;size = array_r.size;
		this-&gt;array = new double[this-&gt;size];
		memcpy(this-&gt;array, array_r.array, this-&gt;size * sizeof(double));
	}
	else
	{
		this-&gt;array = NULL;
		this-&gt;size = 0;
	}

	cout &lt;&lt; &quot;\nZuweisungsoperator...\n&quot;;
	return *this;
}

//	Überladung des ++ Operators als Prefix (++Operand):
Array Array::operator++()
{
	for(int i = 0; i &lt; this-&gt;size; i++)
	{
		++this-&gt;array[i];
	}

	cout &lt;&lt; &quot;\nPREfix...\n&quot;;
	return *this;
}

//	Überladung des ++ Operators als Postfix (Operand++):

Array Array::operator++(int)
{
	Array tmp = *this;
	for(int i = 0; i &lt; this-&gt;size; i++)
	{
		tmp.array[i]++;
	}

	cout &lt;&lt; &quot;\nPOSTfix...\n&quot;;
	return tmp;
}

//	Überladung des Subscriptoperators [] zur Überprüfung auf Bereichsüberschreitung beim Indizieren eines Arrays:
double &amp; Array::operator[](const int i)
{
	static double overFlow;

	if((i &gt;= 0) &amp;&amp; (i &lt; this-&gt;size))
	{
		return array[i];
	}
	else
	{
		return overFlow;
	}
}

//	Überladung &lt;&lt; Operators zur benutzerdefinierten Ausgabe auf std::cout:
ostream &amp;operator&lt;&lt;(ostream &amp;os, const Array &amp;array)
{
	cout &lt;&lt; &quot;\nInhalt von Array:\n&quot;;
	for(int i = 0; i &lt; array.size; i++)
	{
		os &lt;&lt; &quot;[&quot; &lt;&lt; i &lt;&lt; &quot;]:  &quot; &lt;&lt; array.array[i] &lt;&lt; ' ';
	}

	return os;
}
</code></pre>
<p>safar_main.cpp:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;safar.h&quot;

using namespace std;

int main()
{
	Array a1(3);
	Array a2;

	a1[0] = 1; a1[1] = 1.5; a1[2] = 2;

	cout &lt;&lt; &quot;\na1:\t&quot; &lt;&lt; a1;
	cout &lt;&lt; &quot;\na2:\t&quot; &lt;&lt; a2;

	a2 = a1++;

	cout &lt;&lt; &quot;\na1:\t&quot; &lt;&lt; a1;
	cout &lt;&lt; &quot;\na2:\t&quot; &lt;&lt; a2;

	a1 = ++a2;

	cout &lt;&lt; &quot;\na1:\t&quot; &lt;&lt; a1;
	cout &lt;&lt; &quot;\na2:\t&quot; &lt;&lt; a2;

	Array a3 = a2;
	a2 = a1;

	return 0;
}
</code></pre>
<p>Wie gesagt, das Ding funktioniert scheinbar soweit - zumindest tut es, was es tun soll. Mir geht es hierbei auch nicht darum, das Programm effizienter oder lesbarer zu schreiben - ich bin mir nur nicht sicher, warum dieses Phänomen mit dem Copykonstruktor dort auftritt, wo ich nicht damit gerechnet hätte.</p>
<p>Danke euch jetzt schonmal für eure Hilfe,<br />
Schönen Abend noch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1947081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1947081</guid><dc:creator><![CDATA[slagjoeyoco]]></dc:creator><pubDate>Wed, 01 Sep 2010 18:20:33 GMT</pubDate></item><item><title><![CDATA[Reply to Copykonstruktor wird bei Zuweisung verwendet on Wed, 01 Sep 2010 18:25:46 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">Array Array::operator++(int) 
{ 
    Array tmp = *this;                    // &lt;- erste Kopie
    for(int i = 0; i &lt; this-&gt;size; i++) 
    { 
        tmp.array[i]++; 
    } 

    cout &lt;&lt; &quot;\nPOSTfix...\n&quot;; 
    return tmp;                           // &lt;- zweite Kopie, du gibst eine Kopie zurück.
}
</code></pre>
<p>Hinweis:<br />
<a href="http://magazin.c-plusplus.net/artikel/%DCberladung%20von%20Operatoren%20in%20CPlusPlus%20(Teil%201)" rel="nofollow">Überladung von Operatoren (Teil 1)</a><br />
<a href="http://magazin.c-plusplus.net/artikel/%DCberladung%20von%20Operatoren%20in%20CPlusPlus%20(Teil%202)%20-%20Einf%FChrung%20in%20boost%3A%3Aoperators" rel="nofollow">Überladung von Operatoren (Teil 2)</a><br />
<a href="http://magazin.c-plusplus.net/artikel/%DCberladung%20von%20Operatoren%20in%20CPlusPlus%20(Teil%203)%20-%20boost%3A%3Aoperators%20f%FCr%20Fortgeschrittene" rel="nofollow">Überladung von Operatoren (Teil 3)</a></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1947082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1947082</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 01 Sep 2010 18:25:46 GMT</pubDate></item><item><title><![CDATA[Reply to Copykonstruktor wird bei Zuweisung verwendet on Thu, 02 Sep 2010 15:01:36 GMT]]></title><description><![CDATA[<p>Hallo und danke für die schnelle Antowrt.<br />
Ok, dass ich versehntlich die Kopie erhöht hab hab ich jetzt behoben.<br />
Heißt das jetzt, dass bei einem Ausdruck wie<br />
a = b++;<br />
zuerst der Copykonstruktor zur Erstellung des tmp Objekts arbeitet, dann der ++ Operator benutzt wird und bei der Rückgabe des tmp Objekts wieder der Copykonstruktor zuständig ist? Naja und zum schluss agiert noch einmal der Zuweisungsoperator - aber wenn ich jetzt richtig sehe, bleibt mir immer noch eins unklar:<br />
1: Scheinbar wird bei mir bei Benutzung der Prefix Version des ++ Operators ebenfalls der Copykonstruktor gleich zweimal aufgerufen, obwohl dort eigentlich nicht mit einer Kopie des Objekts gearbeitet wird. Muss man hier die Übergabe des this Pointers als sowas wie einen Call by Value Aufruf sehen? Denn wenn ich mich recht erinnere, wäre dann auch hierfür der Copykonstruktor zuständig.</p>
<p>Wenn nämlich auch bei Verwendung des this Pointers der Copykonstruktor einspringen muss - wenn das so stimmt, dann würde ich auch verstehen, dass nur deshalb auch der Destruktor an der Stelle gleich zweimal arbeiten muss. Lansgsam kommts mir so vor, als hätt ich die Vorgänge in dem Programm doppelt und dreifach ausprogrammiert...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1947386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1947386</guid><dc:creator><![CDATA[slagjoeyoco]]></dc:creator><pubDate>Thu, 02 Sep 2010 15:01:36 GMT</pubDate></item><item><title><![CDATA[Reply to Copykonstruktor wird bei Zuweisung verwendet on Thu, 02 Sep 2010 16:20:54 GMT]]></title><description><![CDATA[<p>Tipp: Suche mal nach dem <code>Copy-&amp;-Swap Idiom</code></p>
<p>Einen std::vector könnte (sollte) man auch benutzen. Aber ich gehe jetzt einfach mal davon aus, dass Du üben/experimentieren willst.</p>
<p>Dein postfix operator++ ist falsch. Das Ding sollte eine Kopie des alten Werts zurück geben. Du modifizierst stattdessen das, was du zurück gibst.</p>
<p>BTW: Die Zahl der copy-ctor Aufrufe ist Sache der Implemtierung. Der C++ Standard gibt allerdings Schranken vor. Eine moderne Implementierung (im release-Modus) kann einige überflüssige Kopien wegoptimieren (&quot;copy elision&quot;).</p>
<p>kk</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1947434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1947434</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Thu, 02 Sep 2010 16:20:54 GMT</pubDate></item></channel></rss>