<?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[Initialisierungsliste vs. Konstruktor]]></title><description><![CDATA[<p>mal ne simple Verständnisfrage (oder Fragen):</p>
<pre><code class="language-cpp">MyClass::MyClass( MyOtherClass* param )
: _mOtherClass( param )
{
}
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">MyClass::MyClass( MyOtherClass* param )
{
    _mOtherClass = param;
}
</code></pre>
<p>was ist besser?<br />
Warum ist es besser?<br />
Und wann setzt man was ein?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/209471/initialisierungsliste-vs-konstruktor</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 17:35:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/209471.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 31 Mar 2008 09:37:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Initialisierungsliste vs. Konstruktor on Mon, 31 Mar 2008 09:37:25 GMT]]></title><description><![CDATA[<p>mal ne simple Verständnisfrage (oder Fragen):</p>
<pre><code class="language-cpp">MyClass::MyClass( MyOtherClass* param )
: _mOtherClass( param )
{
}
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">MyClass::MyClass( MyOtherClass* param )
{
    _mOtherClass = param;
}
</code></pre>
<p>was ist besser?<br />
Warum ist es besser?<br />
Und wann setzt man was ein?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1483616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1483616</guid><dc:creator><![CDATA[zwutz]]></dc:creator><pubDate>Mon, 31 Mar 2008 09:37:25 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierungsliste vs. Konstruktor on Mon, 31 Mar 2008 09:45:05 GMT]]></title><description><![CDATA[<p>Version 1 wird nur der Copy Konstruktor aufgerufen.<br />
Version 2 wird zusätzlich noch der Zuweisungsoperator aufgerufen.</p>
<p>Version ist besser, schneller und bei konstanten Membern die einzige Möglichkeit<br />
diese zu initialisieren.</p>
<p>die erste Variante wenn möglich bevorzugen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1483619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1483619</guid><dc:creator><![CDATA[schokomann]]></dc:creator><pubDate>Mon, 31 Mar 2008 09:45:05 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierungsliste vs. Konstruktor on Mon, 31 Mar 2008 09:49:30 GMT]]></title><description><![CDATA[<p>Was besser ist, hängt von der Situation ab, auch wenn die Initialisierungsliste oft im Vorteil ist. Wenn sich der Typ von &quot;_mOtherClass&quot; erwartungsgemäß verhält (also Default-Konstruktor, Copy-Konstruktor und Zuweisungsoperator gut implementiert sind*), dann ist die Initialisierungsliste besser, einfach weil dann ein Aufruf weniger erfolgt.<br />
Ich denke, das kannst du selbst abwägen, wenn du weißt, was vor sich geht.</p>
<p>Beim Anwenden der Initialisierungsliste wird nur der Copy-Konstruktor des Objekts aufgerufen. Wenn du die Zuweisung im Konstruktor-Block hast, wird erst der Standard-Konstruktor aufgerufen, dann der Zuweisungsoperator.</p>
<p>Wenn du ein Objekt als Membervariable hast, dessen Typ keinen Default-Konstruktor (also &quot;Z::Z()&quot;) unterstützt, dann <em>musst</em> du ihn über die Initialisierungsliste initialisieren.</p>
<p>* oder die Standard-Implementation, die vom Compiler generiert ist, ausreicht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1483625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1483625</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Mon, 31 Mar 2008 09:49:30 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierungsliste vs. Konstruktor on Mon, 31 Mar 2008 09:56:54 GMT]]></title><description><![CDATA[<p>Elementinitialisierungslisten machen z.B. in folgenden Fällen Sinn:</p>
<p>- konstante Membervariablen müssen initialisiert sein, bevor der Konstruktor-Inhalt ausgeführt wird<br />
- Referenz-Membervariablen müssen initialisiert sein, bevor der Konstruktor-Inhalt ausgeführt wird<br />
- Übergabe von Parametern an Konstruktoren von eingebetteten Objekten</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">class A
{
public;
  A(){ i=0; }
  A(int zahl) { i=zahl; }

  int i;
};

class B
{
public:
  B(int j);

  A a; // a kann einen Parameter über die Liste aufnehmen
  const int cnum; // kann nur hier direkt oder in Liste initialisiert werden
  int&amp; rnum; // kann nur hier direkt oder in Liste initialisiert werden
};

B::B(int j, int k, int m)
    : a(j), cnum(k), rnum(m)
{
}
</code></pre>
<p>Wenn die 3 oben genannten Fälle nicht zutreffen, ist es vom Ergebnis her egal, ob Du normale Variablen in solchen Listen oder im Konstruktor selbst vordefinierst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1483629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1483629</guid><dc:creator><![CDATA[modestia]]></dc:creator><pubDate>Mon, 31 Mar 2008 09:56:54 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierungsliste vs. Konstruktor on Mon, 31 Mar 2008 10:42:47 GMT]]></title><description><![CDATA[<p>danke, ihr habt mich in meiner Vermutung bestätigt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1483651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1483651</guid><dc:creator><![CDATA[zwutz]]></dc:creator><pubDate>Mon, 31 Mar 2008 10:42:47 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierungsliste vs. Konstruktor on Tue, 01 Apr 2008 09:41:30 GMT]]></title><description><![CDATA[<p>Es sind beides Konstruktoren, wobei einer mit initalisierungsliste arbeitet, und der andere mit ner zuweisung..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1484281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1484281</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Tue, 01 Apr 2008 09:41:30 GMT</pubDate></item></channel></rss>