<?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[Konstruktoren]]></title><description><![CDATA[<p>Huhu ihrs,</p>
<p>mir ist bei einem kleinen Beispiel folgendes aufgefallen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class A
{
    private:
        int x;

    public:
        A();
        A(int);
        A&amp; operator=(const A &amp;);
        A(const A&amp;);

};

A::A() : x(0) {}

A::A(int x)
{
    cout &lt;&lt; endl &lt;&lt; &quot;zuweisungs constructor&quot; &lt;&lt; endl;
    this-&gt;x=x;
}

A&amp; A::operator=(const A &amp;obj)
{
    cout &lt;&lt; endl &lt;&lt; &quot;=&quot; &lt;&lt; endl;
    this-&gt;x=obj.x;
    return *this;
}

A::A(const A&amp; obj)
{
    cout &lt;&lt; endl &lt;&lt; &quot;copy&quot; &lt;&lt; endl;
    this-&gt;x=obj.x;
}

int main()
{
    A a=5;
    A b(5);
    // Nun wurde 2x der Zuweisungskonstruktor aufgerufen.
    // Ist dann also &quot;=&quot; und &quot;(5)&quot; für den  Compiler gleichbedeutend ???

    A c=a;
    A d(a);
    // Hier wurde nun 2x der Copy Constructor aufgerufen
    // Ist dies für den Compiler dann auch gleichbedeutend ???

    A e;
    e=a;
    // Hier wird aber nun die Zuweisungsoperator Funktion auferufen
    /* 
       Warum unterscheidet der Compiler zwischen einer Anfangsinitalisierung
       und einer Initalisierung im Nachhinein ???
    */

    A f;
    f=5;
    /*
       Hier wurde nun der Zuweisungskonstruktor
       und danach noch die Zuweisungsoperator Funktion.
       Hier unterscheidet der Compiler also auch zwischen 1. A f=5 
       und 2. A f; f=5;
       was mich wieder zu der Frage oberhalb führt.

      Was mir noch unverständlicher is warum er bei der 1.Version
      nur 1 Funktionsaufruf braucht, bei der 2.Version aber 2???
   */

   system(&quot;pause&gt;nul&quot;);
   return 0;
}
</code></pre>
<p>Hoff es ist in Ordnung wenn die Fragen im Quelltext stehn <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /><br />
Danke euch schonmal im Voraus <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/topic/235356/konstruktoren</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 05:42:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/235356.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 28 Feb 2009 21:18:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Konstruktoren on Sat, 28 Feb 2009 21:25:59 GMT]]></title><description><![CDATA[<p>Huhu ihrs,</p>
<p>mir ist bei einem kleinen Beispiel folgendes aufgefallen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class A
{
    private:
        int x;

    public:
        A();
        A(int);
        A&amp; operator=(const A &amp;);
        A(const A&amp;);

};

A::A() : x(0) {}

A::A(int x)
{
    cout &lt;&lt; endl &lt;&lt; &quot;zuweisungs constructor&quot; &lt;&lt; endl;
    this-&gt;x=x;
}

A&amp; A::operator=(const A &amp;obj)
{
    cout &lt;&lt; endl &lt;&lt; &quot;=&quot; &lt;&lt; endl;
    this-&gt;x=obj.x;
    return *this;
}

A::A(const A&amp; obj)
{
    cout &lt;&lt; endl &lt;&lt; &quot;copy&quot; &lt;&lt; endl;
    this-&gt;x=obj.x;
}

int main()
{
    A a=5;
    A b(5);
    // Nun wurde 2x der Zuweisungskonstruktor aufgerufen.
    // Ist dann also &quot;=&quot; und &quot;(5)&quot; für den  Compiler gleichbedeutend ???

    A c=a;
    A d(a);
    // Hier wurde nun 2x der Copy Constructor aufgerufen
    // Ist dies für den Compiler dann auch gleichbedeutend ???

    A e;
    e=a;
    // Hier wird aber nun die Zuweisungsoperator Funktion auferufen
    /* 
       Warum unterscheidet der Compiler zwischen einer Anfangsinitalisierung
       und einer Initalisierung im Nachhinein ???
    */

    A f;
    f=5;
    /*
       Hier wurde nun der Zuweisungskonstruktor
       und danach noch die Zuweisungsoperator Funktion.
       Hier unterscheidet der Compiler also auch zwischen 1. A f=5 
       und 2. A f; f=5;
       was mich wieder zu der Frage oberhalb führt.

      Was mir noch unverständlicher is warum er bei der 1.Version
      nur 1 Funktionsaufruf braucht, bei der 2.Version aber 2???
   */

   system(&quot;pause&gt;nul&quot;);
   return 0;
}
</code></pre>
<p>Hoff es ist in Ordnung wenn die Fragen im Quelltext stehn <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /><br />
Danke euch schonmal im Voraus <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/1672174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1672174</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 28 Feb 2009 21:25:59 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktoren on Sat, 28 Feb 2009 21:22:50 GMT]]></title><description><![CDATA[<p><a href="http://fara.cs.uni-potsdam.de/~kaufmann//faqs/copyvsdirect.pdf" rel="nofollow">http://fara.cs.uni-potsdam.de/~kaufmann//faqs/copyvsdirect.pdf</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1672177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1672177</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 28 Feb 2009 21:22:50 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktoren on Sat, 28 Feb 2009 22:02:24 GMT]]></title><description><![CDATA[<p>Nachdem fast alle Fragen durch den Hinweis &quot;copy vs direct&quot; geklärt sein dürften, hier noch die evtl. verbleibende:</p>
<p>Dweb schrieb:</p>
<blockquote>
<p>...</p>
<pre><code class="language-cpp">/* 
       Warum unterscheidet der Compiler zwischen einer Anfangsinitalisierung
       und einer Initalisierung im Nachhinein ???
    */
</code></pre>
<p>...</p>
</blockquote>
<p>Ganz einfach: Weil es Zweiteres nicht gibt.<br />
Eine Initialisierung ist eben &quot;initial&quot; ... also &quot;anfänglich&quot; (weswegen der Begriff &quot;Anfangsinitialisierung&quot; gelinde gesagt <em>unüblich</em> ist).</p>
<p>Was Du da betreibst ist eine <em>Zuweisung</em> und für die wird in C++ - Wunder über Wunder - der <em>Zuweisung</em>soperator verwendet. <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 />
Mach Dir aber nichts draus: Das ist ein relativ typischer Denkfehler (dem vermutlich jeder irgendwie mal aufsitzt), dass doch alles, was in bestimmten Konstellationen zum selben Ergebnis führt, auch prinzipiell dasselbe sei.<br />
(Hier halt: &quot;Initialisierung mit 5&quot; und &quot;Defaultinitialisierung und Zuweisung von 5&quot;)<br />
... und erst im Laufe der Zeit sieht man irgendwann Konstellationen, in denen die Dinge ihre Unterschiedlichkeit auch im Ergebnis zeigen. Du hast diese Unterschiede gesucht und zielsicher aufgespürt - das ist ein gutes Zeichen!</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1672189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1672189</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sat, 28 Feb 2009 22:02:24 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktoren on Sat, 28 Feb 2009 22:23:38 GMT]]></title><description><![CDATA[<p>Dweb schrieb:</p>
<blockquote>
<p>...</p>
<pre><code class="language-cpp">A a=5;
    A b(5);
    // Nun wurde 2x der Zuweisungskonstruktor aufgerufen.
    // Ist dann also &quot;=&quot; und &quot;(5)&quot; für den  Compiler gleichbedeutend ???
</code></pre>
</blockquote>
<p>Mit der Begrifflichkeit wäre ich vorsichtig, zumindest kenne ich den Begriff &quot;Zuweisungskonstruktor&quot; nicht. Ich kenne den Begriff Konstruktor, was im Obigen Fall bei der Initialisierung zutreffen wäre. Und ich kenne den Zuweisungsoperator der in diesem Fall die Notation A&amp; operator=(A const &amp;) hätte.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1672197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1672197</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Sat, 28 Feb 2009 22:23:38 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktoren on Sun, 01 Mar 2009 13:49:24 GMT]]></title><description><![CDATA[<p><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="🙂"
    /> und wieder was gelernt<br />
danke für euere Antworten <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/1672375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1672375</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 01 Mar 2009 13:49:24 GMT</pubDate></item></channel></rss>