<?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[Das &amp;quot;&amp;amp;-Zeichen&amp;quot;]]></title><description><![CDATA[<p>hey,<br />
ich hab grad ein Programmbeispiel gefunden, was ich nicht ganz verstehe.</p>
<pre><code class="language-cpp">class Vektor2d {
	private:
		double x;
		double y;
	public:
		Vektor2d();
		Vektor2d(double x, double y);

		Vektor2d&amp; operator+=(Vektor2d v);
		Vektor2d&amp; operator-();
		Vektor2d&amp; operator*=(double s=;
		friend ostream&amp; operator &lt;&lt;(ostream&amp; out, Vektor2d v);
};
</code></pre>
<p>Oder auch dieses hier:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class meaCulpa {
	public:
		virtual void MeldeFehler() =0;
};

class KeineDatenMehr:public meaCulpa {
	public:
		KeineDatenMehr(int a) {nr = a;}
		void MeldeFehler() {cout &lt;&lt; nr &lt;&lt; endl;}
	private:
		int nr;
};

class QuelleFehlt:public meaCulpa {
	public:
		QuelleFehlt(void) {}
		void MeldeFehler() {cout &lt;&lt; &quot;Quelle fehler&quot; &lt;&lt; endl;}
};

void Tuwas(int Problem) throw (KeineDatenMehr, QuelleFehlt){
	if (Problem==0){
		throw KeineDatenMehr(8);
	}
	if (Problem==1){
		throw QuelleFehlt();
	}
}

int main(){
	try{
		cout &lt;&lt; &quot;\nErst mit 1&quot; &lt;&lt; endl;
		Tuwas(1);
	}
	catch(meaCulpa&amp; fehler){
		fehler.MeldeFehler();
	}
	try{
		cout &lt;&lt;&quot;\nDann mit 0&quot; &lt;&lt; endl;
		Tuwas(0);
	}
	catch(meaCulpa&amp; fehler) {
		fehler.MeldeFehler();
	}
}
</code></pre>
<p>Beim ersten steht in den Zeilen 9-12 hinter Vektor2d immer ein &quot;&amp;&quot; zeichen. Ich kenne das &amp;-Zeichen als Adressoperator mit dem ich die Adresse einer Variable ermitteln kann. Aber da steht das Zeichen immer vor der Variablen - hier stehts dahienr.<br />
Dasselbe beim zweiten Beispiel in der 37. Zeile. Da steht auch ein &amp;-Zeichen, was ich nicht verstehe.</p>
<p>Kann mir das vielleicht jemand erklären?</p>
<p>Vielen Dank schonmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/234488/das-quot-amp-zeichen-quot</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Apr 2026 17:34:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/234488.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Feb 2009 15:36:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Das &amp;quot;&amp;amp;-Zeichen&amp;quot; on Wed, 18 Feb 2009 15:36:34 GMT]]></title><description><![CDATA[<p>hey,<br />
ich hab grad ein Programmbeispiel gefunden, was ich nicht ganz verstehe.</p>
<pre><code class="language-cpp">class Vektor2d {
	private:
		double x;
		double y;
	public:
		Vektor2d();
		Vektor2d(double x, double y);

		Vektor2d&amp; operator+=(Vektor2d v);
		Vektor2d&amp; operator-();
		Vektor2d&amp; operator*=(double s=;
		friend ostream&amp; operator &lt;&lt;(ostream&amp; out, Vektor2d v);
};
</code></pre>
<p>Oder auch dieses hier:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class meaCulpa {
	public:
		virtual void MeldeFehler() =0;
};

class KeineDatenMehr:public meaCulpa {
	public:
		KeineDatenMehr(int a) {nr = a;}
		void MeldeFehler() {cout &lt;&lt; nr &lt;&lt; endl;}
	private:
		int nr;
};

class QuelleFehlt:public meaCulpa {
	public:
		QuelleFehlt(void) {}
		void MeldeFehler() {cout &lt;&lt; &quot;Quelle fehler&quot; &lt;&lt; endl;}
};

void Tuwas(int Problem) throw (KeineDatenMehr, QuelleFehlt){
	if (Problem==0){
		throw KeineDatenMehr(8);
	}
	if (Problem==1){
		throw QuelleFehlt();
	}
}

int main(){
	try{
		cout &lt;&lt; &quot;\nErst mit 1&quot; &lt;&lt; endl;
		Tuwas(1);
	}
	catch(meaCulpa&amp; fehler){
		fehler.MeldeFehler();
	}
	try{
		cout &lt;&lt;&quot;\nDann mit 0&quot; &lt;&lt; endl;
		Tuwas(0);
	}
	catch(meaCulpa&amp; fehler) {
		fehler.MeldeFehler();
	}
}
</code></pre>
<p>Beim ersten steht in den Zeilen 9-12 hinter Vektor2d immer ein &quot;&amp;&quot; zeichen. Ich kenne das &amp;-Zeichen als Adressoperator mit dem ich die Adresse einer Variable ermitteln kann. Aber da steht das Zeichen immer vor der Variablen - hier stehts dahienr.<br />
Dasselbe beim zweiten Beispiel in der 37. Zeile. Da steht auch ein &amp;-Zeichen, was ich nicht verstehe.</p>
<p>Kann mir das vielleicht jemand erklären?</p>
<p>Vielen Dank schonmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1665847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1665847</guid><dc:creator><![CDATA[Wanderfalke]]></dc:creator><pubDate>Wed, 18 Feb 2009 15:36:34 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;&amp;amp;-Zeichen&amp;quot; on Wed, 18 Feb 2009 15:37:51 GMT]]></title><description><![CDATA[<p>Schon mal was von Referenzen gehört?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1665849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1665849</guid><dc:creator><![CDATA[tachauch]]></dc:creator><pubDate>Wed, 18 Feb 2009 15:37:51 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;&amp;amp;-Zeichen&amp;quot; on Wed, 18 Feb 2009 15:38:38 GMT]]></title><description><![CDATA[<p>Das sind Referenzen - etwas Ähnliches wie Zeiger. In einem guten Buch/Tutorial sollten diese angesprochen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1665850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1665850</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 18 Feb 2009 15:38:38 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;&amp;amp;-Zeichen&amp;quot; on Wed, 18 Feb 2009 15:43:22 GMT]]></title><description><![CDATA[<p>Vielleicht noch mit einem Link zu einem Tutorial, wo das erklärt wird:<br />
<a href="http://tutorial.schornboeck.net/referenzen.htm" rel="nofollow">http://tutorial.schornboeck.net/referenzen.htm</a></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1665857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1665857</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 18 Feb 2009 15:43:22 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;&amp;amp;-Zeichen&amp;quot; on Wed, 18 Feb 2009 15:56:44 GMT]]></title><description><![CDATA[<p>hmmm - aber wenn ich mir das tutorial ansehe, dann steht doch links immer der typ, dann das &amp;-Zeichen - und dann der Name der Referenz.<br />
also irgendwas in der form: int&amp; referenz.</p>
<p>dann müsste ja in dem beispiel:</p>
<pre><code class="language-cpp">Vektor2d&amp; operator*=(double s=;
</code></pre>
<p>Vektor2d quasi ein Datentyp sein? Das ist doch eine Klasse - wie kann das sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1665869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1665869</guid><dc:creator><![CDATA[Wanderfalke]]></dc:creator><pubDate>Wed, 18 Feb 2009 15:56:44 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;&amp;amp;-Zeichen&amp;quot; on Wed, 18 Feb 2009 15:58:02 GMT]]></title><description><![CDATA[<p>Eine Klasse ist ein Datentyp.<br />
MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1665871</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1665871</guid><dc:creator><![CDATA[Halbexperte]]></dc:creator><pubDate>Wed, 18 Feb 2009 15:58:02 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;&amp;amp;-Zeichen&amp;quot; on Wed, 18 Feb 2009 16:04:15 GMT]]></title><description><![CDATA[<p>Wanderfalke schrieb:</p>
<blockquote>
<p>Vektor2d quasi ein Datentyp sein? Das ist doch eine Klasse - wie kann das sein?</p>
</blockquote>
<p>Dir scheint relativ viel Grundwissen von C++ zu fehlen. <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>Klassen haben ja gerade den Sinn, eigene Datentypen zu repräsentieren, damit man eine logische Gliederung und Abstraktion in den Quellcode bringen und mit Objekten (objektorientiert) arbeiten kann. <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/1665875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1665875</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 18 Feb 2009 16:04:15 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;&amp;amp;-Zeichen&amp;quot; on Wed, 18 Feb 2009 16:23:32 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Dir scheint relativ viel Grundwissen von C++ zu fehlen. <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>
</blockquote>
<p>hmm ja das kann schon sein. Aber das Klassen einen eigenen Datentyp darstellen hab ich wirklich noch nie gehört. Auch jetzt als ichs gesucht hab, hab ich nichts dazu gefunden...</p>
<p>Gibts da vielleicht ein vernünftiges Buch, was man lesen könnte? Ich les im mom das Buch von Erlenkötter - aber da stand auch nix zu drin... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1665886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1665886</guid><dc:creator><![CDATA[Wanderfalke]]></dc:creator><pubDate>Wed, 18 Feb 2009 16:23:32 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;&amp;amp;-Zeichen&amp;quot; on Wed, 18 Feb 2009 16:28:24 GMT]]></title><description><![CDATA[<p><a href="http://www.amazon.de/Lernen-professionell-anwenden-Ulla-Kirch-Prinz/dp/3826617649/" rel="nofollow">http://www.amazon.de/Lernen-professionell-anwenden-Ulla-Kirch-Prinz/dp/3826617649/</a><br />
<a href="http://www.amazon.de/C-Primer-Stanley-B-Lippman/dp/3827326125/" rel="nofollow">http://www.amazon.de/C-Primer-Stanley-B-Lippman/dp/3827326125/</a></p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1665887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1665887</guid><dc:creator><![CDATA[Halbexperte]]></dc:creator><pubDate>Wed, 18 Feb 2009 16:28:24 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;&amp;amp;-Zeichen&amp;quot; on Wed, 18 Feb 2009 16:52:04 GMT]]></title><description><![CDATA[<p>Super! Danke Dir! <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/1665903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1665903</guid><dc:creator><![CDATA[Wanderfalke]]></dc:creator><pubDate>Wed, 18 Feb 2009 16:52:04 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;&amp;amp;-Zeichen&amp;quot; on Wed, 18 Feb 2009 17:55:44 GMT]]></title><description><![CDATA[<p>Wanderfalke schrieb:</p>
<blockquote>
<p>Gibts da vielleicht ein vernünftiges Buch, was man lesen könnte? Ich les im mom das Buch von Erlenkötter - aber da stand auch nix zu drin... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>Dann schau nochmal dort nach, wo erlärt wird, wie man Variablen definiert. Da sollte dann das in etwa mal fallen. Falls wirklich nicht, wäre das ein Grund das Buch wirklich wegzuwerfen..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1665937</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1665937</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 18 Feb 2009 17:55:44 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;&amp;amp;-Zeichen&amp;quot; on Wed, 18 Feb 2009 18:29:50 GMT]]></title><description><![CDATA[<p>ich habs grad nochmal überflogen, aber nichts dazu gefunden... Ich guck später nochmal genauer.</p>
<p>ich hab noch eine Frage zu einem anderen Problem / anderem Programm:</p>
<pre><code class="language-cpp">// Programm zur Demonstration eines Kopierkonstruktors
#include &lt;iostream&gt;
using namespace std;

class tKlasse
{
public:
    tKlasse() // Konstruktor: erzeugt externe Daten
    {
        Zeiger = new int;
        *Zeiger = 5;
    }
    ~tKlasse() // Destruktor: gibt externe Daten frei
    {
        delete Zeiger;
        Zeiger = 0;
    }
    void SetData(int a) { *Zeiger = a; }
    int GetData() { return *Zeiger; }

    tKlasse(const tKlasse&amp; k) // Kopierkonstruktor
    {
        // zur Demonstration meldet er sich
        cout &lt;&lt; &quot;Kopierkonstruktor&quot; &lt;&lt; endl;
        // Externe Daten erzeugen und kopieren
        Zeiger = new int;
        *Zeiger = k.GetData();
        // Normale Datenelemente auch kopieren
        sonstiges = k.sonstiges;
    }

    int sonstiges; // steht für die Nicht-Zeiger Datenelemente
private:
    int *Zeiger;   // Zeiger, also Kopierkonstruktor notwendig
};

// Die Funktion dient nur zur Demonstration. Weil der Parameter
// per Wert übergeben wird, wird beim Aufruf der
// Kopierkonstruktor aufgerufen
void Funktion(tKlasse para)
{
    cout &lt;&lt; &quot;Funktion:&quot; &lt;&lt; para.GetData() &lt;&lt; endl;
}

// Hauptprogramm zum Testen
int main()
{
    tKlasse Objekt;
    Objekt.SetData(7);
    Funktion(Objekt); // Hier wird der Kopierkonstruktor aktiv
    cout &lt;&lt; Objekt.GetData() &lt;&lt; endl;
}
</code></pre>
<p>Was ist nicht verstehe ist, wieso der Kopierkonstruktor aktiv wird. In der Zeile 50 steht ja erstmal nur ein Aufruf der Funktion &quot;Funktion&quot; Die Funktion ruft dann die Funktion getData auf - aber wo kommt da der Kopierkonstruktor ins Spiel?<br />
Das Programm läuft doch nicht einfach von getData in den Kopierkonstruktor rein...?</p>
<p>Könnt ihr mir da vielleicht nochmal helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1665963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1665963</guid><dc:creator><![CDATA[Wanderfalke]]></dc:creator><pubDate>Wed, 18 Feb 2009 18:29:50 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;&amp;amp;-Zeichen&amp;quot; on Wed, 18 Feb 2009 18:37:00 GMT]]></title><description><![CDATA[<p>An die Funktion wird eine Kopie übergeben und für die Kopie braucht es nunmal den Kopierkonstruktor.<br />
Aber das ist nur nochmals ein Hinweis, gutes Buch kaufen oder Tutorial machen. Das sind Grundlagen!</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1665970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1665970</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 18 Feb 2009 18:37:00 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;&amp;amp;-Zeichen&amp;quot; on Wed, 18 Feb 2009 18:38:34 GMT]]></title><description><![CDATA[<p>Steht doch schon im Kommentar.</p>
<p>Funktion(Objekt) &lt;- Da wird &quot;Objekt&quot; in &quot;para&quot; kopiert: void Funktion(tKlasse para)</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1665971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1665971</guid><dc:creator><![CDATA[Halbexperte]]></dc:creator><pubDate>Wed, 18 Feb 2009 18:38:34 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;&amp;amp;-Zeichen&amp;quot; on Wed, 18 Feb 2009 18:45:43 GMT]]></title><description><![CDATA[<p>Und genau das kannst du dir mit Referenzen sparen <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/1665977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1665977</guid><dc:creator><![CDATA[R3dNeXX]]></dc:creator><pubDate>Wed, 18 Feb 2009 18:45:43 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;&amp;amp;-Zeichen&amp;quot; on Wed, 18 Feb 2009 18:52:07 GMT]]></title><description><![CDATA[<p>ja das &quot;gute buch&quot; ist hoffentlich schon unterwegs zu mir und sollte hoffentlich morgen ankommen. <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>Der Kopierkonstruktor wird also automatisch sofort aufgerufen, wenn ich einfach nur Parameter übergebe? Da muss man nicht den KOnstuktor noch explizit aufrufen? Dass eine normale Parameteraufgabe gleich den Konstruktor auf den Plan ruft hatte ich auch nicht gedacht...</p>
<p>(hoffentlich kommt das buch bald... )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1665984</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1665984</guid><dc:creator><![CDATA[Wanderfalke]]></dc:creator><pubDate>Wed, 18 Feb 2009 18:52:07 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;&amp;amp;-Zeichen&amp;quot; on Wed, 18 Feb 2009 19:05:14 GMT]]></title><description><![CDATA[<p>Du willst doch nicht unbedingt dass in deiner Funktion() mit dem originalen &quot;Objekt&quot; aus main() gearbeitet wird.<br />
Und wenn doch, dann übergib per Referenz &amp;. Dir bleibt die Wahl.<br />
MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1665991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1665991</guid><dc:creator><![CDATA[Halbexperte]]></dc:creator><pubDate>Wed, 18 Feb 2009 19:05:14 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;&amp;amp;-Zeichen&amp;quot; on Wed, 18 Feb 2009 19:12:06 GMT]]></title><description><![CDATA[<p>Wanderfalke schrieb:</p>
<blockquote>
<p>ja das &quot;gute buch&quot; ist hoffentlich schon unterwegs zu mir und sollte hoffentlich morgen ankommen. <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>Der Kopierkonstruktor wird also automatisch sofort aufgerufen, wenn ich einfach nur Parameter übergebe? Da muss man nicht den KOnstuktor noch explizit aufrufen? Dass eine normale Parameteraufgabe gleich den Konstruktor auf den Plan ruft hatte ich auch nicht gedacht...</p>
<p>(hoffentlich kommt das buch bald... )</p>
</blockquote>
<p>Der Kopierkonstruktor wird aufgerufen, wenn ein Objekt kopiert wird. Sprich bei einem Funktionsaufruf, der einen Typen T erwartet, wird bei der Übergabe des Objektes dieses kopiert und das immer. Man muss lediglich darauf achten, dass manchmal ein Zeiger oder eine Referenz erwartet wird, welche ebenfalls kopiert wird.</p>
<pre><code class="language-cpp">struct foo
{};

void bar ( foo f )
{ ... }
...

foo g;
bar ( g ); //Kopierkonstruktor wird aufgerufen, welcher implizit vom Compiler erstellt wird, sofern du keinen eigenen definierst
</code></pre>
<p>EDIT:<br />
Zu beachten ist auch, dass der Kopierkonstruktor nur dann aufgerufen wird, wenn tatsächlich ein neues Objekt erzeugt wird, was bei einer Zuweisung nicht der Fall ist. Dafür gibt es dann den =-Operator, welcher ebenfalls vom Compiler erstellt wird, wenn du keinen definierst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1665995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1665995</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 18 Feb 2009 19:12:06 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;&amp;amp;-Zeichen&amp;quot; on Wed, 18 Feb 2009 20:40:22 GMT]]></title><description><![CDATA[<p>Was bereits einigen Kopfzerbrechen bereitet hat, ist die zweite Deklaration:</p>
<pre><code class="language-cpp">MyClass Obj1;
MyClass Obj2 = Obj1;
</code></pre>
<p>Hier wird kein Zuweisungsoperator aufgerufen, das ist der Kopierkonstruktor. Also äquivalent zu:</p>
<pre><code class="language-cpp">MyClass Obj2(Obj1);
</code></pre>
<p>drakon schrieb:</p>
<blockquote>
<p>Der Kopierkonstruktor wird aufgerufen, wenn ein Objekt kopiert wird. Sprich bei einem Funktionsaufruf, der einen Typen T erwartet, wird bei der Übergabe des Objektes dieses kopiert und das immer. Man muss lediglich darauf achten, dass manchmal ein Zeiger oder eine Referenz erwartet wird, welche ebenfalls kopiert wird.</p>
</blockquote>
<p>Um es vielleicht noch etwas klarer auszudrücken: Wenn ein Parameter ein Zeiger oder eine Referenz ist, wird das übergebene referenzierte Objekt nicht kopiert. Bei einem Zeiger wird dessen Adresse kopiert. Bei einer Referenz kann man nicht wirklich von Kopie sprechen, da Referenzen keine Objekte sind. Faktisch läuft es aber auf das Gleiche hinaus, also dass auf das übergebene Objekt nur verwiesen wird.</p>
<p>Ich hoffe, ich habe hiermit nicht zu viel Verwirrung gestiftet. <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/1666059</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1666059</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 18 Feb 2009 20:40:22 GMT</pubDate></item></channel></rss>