<?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[Initialisiererliste]]></title><description><![CDATA[<p>Hey,<br />
ich würde gerne wissen, wann es notwendig ist eine initialisiererliste zu verwenden? Ich versteh das nicht. Muss man bei der Initialisierung irgendwas beachten?<br />
Am besten wär das verständlich, wenn jemand mir das an einem Bsp. erklären könnte, da nur durch eine Initialisiererliste zu verwirklichen ist.<br />
Danke schonmal</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/288671/initialisiererliste</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Apr 2026 04:48:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/288671.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 20 Jun 2011 18:10:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 18:10:35 GMT]]></title><description><![CDATA[<p>Hey,<br />
ich würde gerne wissen, wann es notwendig ist eine initialisiererliste zu verwenden? Ich versteh das nicht. Muss man bei der Initialisierung irgendwas beachten?<br />
Am besten wär das verständlich, wenn jemand mir das an einem Bsp. erklären könnte, da nur durch eine Initialisiererliste zu verwirklichen ist.<br />
Danke schonmal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081302</guid><dc:creator><![CDATA[Riko]]></dc:creator><pubDate>Mon, 20 Jun 2011 18:10:35 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 18:19:26 GMT]]></title><description><![CDATA[<p>Erstens: Initialisierungslisten sind immer nützlich, wenn du ein Objekt konstruierst, unabhängig davon ob es auch anders möglich ist.</p>
<p>Zweitens: Basisklassen kannst du nur über Initialisierungsliste konstruieren, genauso Member, die keinen Default-Konstruktor haben (inklusive konstante Elemente und Referenzen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081307</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 20 Jun 2011 18:19:26 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 18:36:07 GMT]]></title><description><![CDATA[<p>Wie der Name schon sagt, initialisiert die Initialisierungsliste die Member. Würdest du die Initialisierungsliste nicht verwenden, hättest du eine Definition+Zuweisung.</p>
<p>Wenn Nexus nichts dagegen hat, zitiere ich mal noch einen Beitrag von ihm. <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>Nexus schrieb:</p>
<blockquote>
<p>Wofür die Initialisierungsliste zwingend notwendig ist:</p>
<ul>
<li><code>const</code> -qualifizierte Membervariablen</li>
<li>Referenzen</li>
<li>Member ohne Defaultkonstruktor</li>
<li>Member, die den Zuweisungsoperator nicht unterstützen</li>
<li>Basisklassen ohne Defaultkonstruktor</li>
</ul>
</blockquote>
<p>Grundsätzlich empfiehlt es sich, immer die Initialisierungsliste zu verwenden.</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081311</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 20 Jun 2011 18:36:07 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 18:39:10 GMT]]></title><description><![CDATA[<p>Ok, das hilft mir schonmal sehr weiter. Ich komm von C und versuche mich gerade in C++ einzuarbeiten. Kannst du mir vielleicht noch ein kurzes Programmierungsbsp. zu einem Member ohne Defaultkonstruktor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081315</guid><dc:creator><![CDATA[Riko]]></dc:creator><pubDate>Mon, 20 Jun 2011 18:39:10 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 18:40:20 GMT]]></title><description><![CDATA[<p>Riko schrieb:</p>
<blockquote>
<p>Ok, das hilft mir schonmal sehr weiter. Ich komm von C und versuche mich gerade in C++ einzuarbeiten. Kannst du mir vielleicht noch ein kurzes Programmierungsbsp. zu einem Member ohne Defaultkonstruktor?</p>
</blockquote>
<p>..geben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081316</guid><dc:creator><![CDATA[Riko]]></dc:creator><pubDate>Mon, 20 Jun 2011 18:40:20 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 18:42:48 GMT]]></title><description><![CDATA[<p>Klar, aber ohne Garantie auf Praxisbezug:</p>
<pre><code class="language-cpp">//Die Klasse hat einen benutzerdefinierten Konstruktor, also stellt der Compiler keinen Default-Konstruktor mehr zur Verfügung:
class part
{
  ...
public:
  part(int size);
  ...
};

class full
{
  part member;
public:
  full() : member(4711) {...}
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2081318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081318</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 20 Jun 2011 18:42:48 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 18:43:57 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="🙂"
    /> Vielen Dank.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081319</guid><dc:creator><![CDATA[Riko]]></dc:creator><pubDate>Mon, 20 Jun 2011 18:43:57 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 18:52:55 GMT]]></title><description><![CDATA[<p>Noch eine Frage <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>Wenn ich folgendes Bsp. gegeben habe</p>
<pre><code class="language-cpp">c l a s s C1 {
p r i v a t e :
i n t z a h l 1 , z a h l 2 , z a h l 3 ;
}
</code></pre>
<p>und einen Konstruktor erstellen will, bei dem alle Paramter initialisiert werden, was für ein Vorteil hat das, dass mit einer Initialisierliste zu machen im Vergleich zu einem mit this.Zeiger? Wie würden beide Umsetzungen auf dieses Bsp. bezogen aussehen, um das im Vergleich zu sehen? ( zumindestens das mit dem this.Zeiger )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081324</guid><dc:creator><![CDATA[Riko]]></dc:creator><pubDate>Mon, 20 Jun 2011 18:52:55 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 18:56:42 GMT]]></title><description><![CDATA[<p>Dann macht es (fast) keinen Unterschied (vielleicht wir dann alles doppelt zugewiesen aber der Compiler sollte das schon vermeiden). Wieso schreibst du alles durch Leerzeichen getrennt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081327</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Mon, 20 Jun 2011 18:56:42 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 18:59:40 GMT]]></title><description><![CDATA[<p>der macht das manchmal, wenn ich etwas aus visuell c++ kopiere.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081328</guid><dc:creator><![CDATA[Riko]]></dc:creator><pubDate>Mon, 20 Jun 2011 18:59:40 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 19:02:37 GMT]]></title><description><![CDATA[<p>..ich hatte dieses Bsp. zuvor in einem Forum kopiert und versucht das selber zu schreiben, aber ich versteh nicht, wie ich das als this.Zeiger schreibe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081332</guid><dc:creator><![CDATA[Riko]]></dc:creator><pubDate>Mon, 20 Jun 2011 19:02:37 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 19:03:41 GMT]]></title><description><![CDATA[<p>aus einem Forum kopiert/geklaut..wie man das auch sagt <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2081333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081333</guid><dc:creator><![CDATA[Riko]]></dc:creator><pubDate>Mon, 20 Jun 2011 19:03:41 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 19:04:13 GMT]]></title><description><![CDATA[<p>So:</p>
<pre><code class="language-cpp">struct Klasse
{
  private:
    int Zahl1, Zahl2, Zahl3;
  public:
    Klasse(int Zahl1, Zahl2, Zahl3)
    {
      this-&gt;Zahl1 = Zahl1;
      this-&gt;Zahl2 = Zahl2;
      this-&gt;Zahl3 = Zahl3;
    }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2081334</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081334</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Mon, 20 Jun 2011 19:04:13 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 19:10:38 GMT]]></title><description><![CDATA[<p>Nur mal grob hingeworfen:<br />
mit Zuweisungen:</p>
<pre><code class="language-cpp">C1(int value)
{
  zahl1 = value; //hier könntest du auch this-&gt;zahl1 schreiben, ist aber nicht notwendig
  zahl2 = 2*value;
  zahl3 = 1;
}
</code></pre>
<p>mit Initialisierungsliste:</p>
<pre><code class="language-cpp">c1(int value)
 : zahl1(value)
 , zahl2(2*value)
 , zahl3(0)
{}
</code></pre>
<p>Bei int-Werten macht es keinen großen Unterschied, weil deren Default-Konstruktor nicht wirklich viel zu tun hat - und jeder vernünftige Compiler den Code optimieren kann. Problematisch wird es, wenn du dort mit Klassen arbeitest, die nicht-triviale Konstruktoren haben.</p>
<p>Edit: Pointer-Zuriff korrigiert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081338</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081338</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 20 Jun 2011 19:10:38 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 19:09:22 GMT]]></title><description><![CDATA[<p>Man kann ja auch so gut auf die Member einer Klasse über einen Zeiger mit dem <code>.</code> -Operaror zugreiffen <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2081339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081339</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Mon, 20 Jun 2011 19:09:22 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 19:10:11 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>Man kann ja auch so gut auf die Member einer Klasse über einen Zeiger mit dem <code>.</code> -Operaror zugreiffen <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>War wohl nur n Tippfehler, passiert dir sicherlich oft genug <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081341</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 20 Jun 2011 19:10:11 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 19:11:42 GMT]]></title><description><![CDATA[<p>Ja, besten Dank nochmal. Hat mir wirklich weiter geholfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081342</guid><dc:creator><![CDATA[Riko]]></dc:creator><pubDate>Mon, 20 Jun 2011 19:11:42 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 22:21:33 GMT]]></title><description><![CDATA[<p>Ich habe zu diesem Thema auch eine Frage. Benutzt man die Initialisierungsliste nun nur für &quot;primitive&quot; Datentypen wie bool, double, int usw. oder sollte man wirklich alle Member einer Klasse in die Liste schreiben? Macht es also Sinn z.B. den std::wstring-Member einer Klasse in die Initialisierungsliste zu schreiben?<br />
Wenn ja mit welchem Wert sollte man diesen Member initialisieren?</p>
<pre><code class="language-cpp">class MyClass
{
public:
MyClass() :
myString() // oder
//myString(0) // oder
//myString(L&quot;&quot;)
{
}

private:
std::wstring myString;
};
</code></pre>
<p>Das wird dem Compiler wahrscheinlich egal sein, aber welche Variante ist optisch vorzuziehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081437</guid><dc:creator><![CDATA[Initliste]]></dc:creator><pubDate>Mon, 20 Jun 2011 22:21:33 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 22:22:38 GMT]]></title><description><![CDATA[<p>Wenn du den Default-Konstruktor aufrufen möchtest, brauchst du gar nichts tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081438</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 20 Jun 2011 22:22:38 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 22:33:53 GMT]]></title><description><![CDATA[<p>Achso, der wird dann also automatisch aufgerufen.<br />
Eine letzte Frage noch. Warum verwendet man bei structs ZeroMemory?<br />
Z.B. hier:</p>
<pre><code class="language-cpp">WNDCLASSEX wcex;
	ZeroMemory(&amp;wcex, sizeof(WNDCLASSEX));
</code></pre>
<p>Haben Strukturen keine Initialisierungsliste?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081441</guid><dc:creator><![CDATA[Initliste]]></dc:creator><pubDate>Mon, 20 Jun 2011 22:33:53 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 22:35:27 GMT]]></title><description><![CDATA[<p>bzw. wird hier nicht der Default-Constructor aufgerufen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081442</guid><dc:creator><![CDATA[Initliste]]></dc:creator><pubDate>Mon, 20 Jun 2011 22:35:27 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 22:37:12 GMT]]></title><description><![CDATA[<p>Das ist C-Code. Vergiss das ganz schnell.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081444</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 20 Jun 2011 22:37:12 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 22:44:29 GMT]]></title><description><![CDATA[<p>Initliste schrieb:</p>
<blockquote>
<p>Achso, der wird dann also automatisch aufgerufen.<br />
Eine letzte Frage noch. Warum verwendet man bei structs ZeroMemory?<br />
Z.B. hier:</p>
<pre><code class="language-cpp">WNDCLASSEX wcex;
	ZeroMemory(&amp;wcex, sizeof(WNDCLASSEX));
</code></pre>
<p>Haben Strukturen keine Initialisierungsliste?</p>
</blockquote>
<p>Structs haben keinen Konstruktor, den man aufrufen könnte. Und selbst unter C würde ich lieber die direkte Methode <code>WNDCLASSEX wcex = {0};</code> verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081447</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 20 Jun 2011 22:44:29 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 22:44:47 GMT]]></title><description><![CDATA[<p>Initliste schrieb:</p>
<blockquote>
<p>Warum verwendet man bei structs ZeroMemory?</p>
</blockquote>
<p>Wo auch immer Du das her hast; Du schließt aus einem speziellen Fall auf allgemeines.</p>
<p>'Man' verwendet nicht ZeroMemory() bei structs.</p>
<p>Jemand hat's in Deinem zitierten Fall getan.</p>
<p>Himmelweiter Unterschied!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081448</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Mon, 20 Jun 2011 22:44:47 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 22:47:11 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Structs haben keinen Konstruktor, den man aufrufen könnte.</p>
</blockquote>
<p>Structs können in C++ einen Konstruktor haben, in C natürlich nicht <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>CStoll schrieb:</p>
<blockquote>
<p>Und selbst unter C würde ich lieber die direkte Methode <code>WNDCLASSEX wcex = {0};</code> verwenden.</p>
</blockquote>
<p><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/2081449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081449</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 20 Jun 2011 22:47:11 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisiererliste on Mon, 20 Jun 2011 22:48:49 GMT]]></title><description><![CDATA[<p>Meinst du nur das ZeroMemory? Die WNDCLASSEX brauche ich um mir ein Win32-Fenster zu erzeugen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081450</guid><dc:creator><![CDATA[Initliste]]></dc:creator><pubDate>Mon, 20 Jun 2011 22:48:49 GMT</pubDate></item></channel></rss>