<?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[C&#x2F;C++ Initialisierungslisten]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich wollte eine alte C-Struktur, die bereits tausende male im u.A. mit Initialisierungsklammern definiert wird, für den neunen C++ code erweitern.</p>
<pre><code class="language-cpp">struct Struktur
{
   int a;
   int b;

   Struktur() : a(0), b(0) {;}
};

// Alter Quellcode
Struktur objekt = {0};
</code></pre>
<p>Warum meckert der (ICC 10) compiler dass man die Initialisierungsklammern auf Objekte vom Typ Struktur nicht nutzen darf?<br />
Er könnte doch einfach die Initialisierungsliste des default-CTOR's ignorieren?</p>
<p>Gibt es da einen guten Umgehungsweg?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/252735/c-c-initialisierungslisten</link><generator>RSS for Node</generator><lastBuildDate>Mon, 14 Sep 2026 04:13:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/252735.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 23 Oct 2009 15:51:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C&#x2F;C++ Initialisierungslisten on Fri, 23 Oct 2009 15:51:40 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich wollte eine alte C-Struktur, die bereits tausende male im u.A. mit Initialisierungsklammern definiert wird, für den neunen C++ code erweitern.</p>
<pre><code class="language-cpp">struct Struktur
{
   int a;
   int b;

   Struktur() : a(0), b(0) {;}
};

// Alter Quellcode
Struktur objekt = {0};
</code></pre>
<p>Warum meckert der (ICC 10) compiler dass man die Initialisierungsklammern auf Objekte vom Typ Struktur nicht nutzen darf?<br />
Er könnte doch einfach die Initialisierungsliste des default-CTOR's ignorieren?</p>
<p>Gibt es da einen guten Umgehungsweg?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797175</guid><dc:creator><![CDATA[sqrt(-1)]]></dc:creator><pubDate>Fri, 23 Oct 2009 15:51:40 GMT</pubDate></item><item><title><![CDATA[Reply to C&#x2F;C++ Initialisierungslisten on Fri, 23 Oct 2009 15:58:53 GMT]]></title><description><![CDATA[<p>Nein, sobald eine Klasse Konstruktoren besitzt, hat sie nicht mehr POD-Status und kann nicht mehr durch die Aggregats-Initialisierungsliste (geschweifte Klammern) initialisiert werden. Im nächsten C++-Standard ginge das wieder über <code>std::initializer_list</code> .</p>
<p>Für dein Refactoring schlage ich vor, reguläre Ausdrücke zu verwenden. Ich weiss nicht, ob du dich ein wenig damit auskennst, aber dann ist die Ersetzung von</p>
<pre><code class="language-cpp">Struktur Variablenname = {Initialisierer1, Initialisierer2, ...};
</code></pre>
<p>durch</p>
<pre><code class="language-cpp">Struktur Variablenname(Initialisierer1, Initialisierer2, ...);
</code></pre>
<p>ein Leichtes. Der MSVC++ unterstützt dieses Feature zum Beispiel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797178</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 23 Oct 2009 15:58:53 GMT</pubDate></item><item><title><![CDATA[Reply to C&#x2F;C++ Initialisierungslisten on Fri, 23 Oct 2009 18:29:06 GMT]]></title><description><![CDATA[<p>Danke für deine Hinweise!</p>
<p>Ich schätze du meinst mit regulären Ausdrücken die Suche-/Ersätzefunktion vom Editor? Kann mir kaum vorstellen dass man damit alle Fälle (wie z.B. Arrays von Objekten) erfassen kann.</p>
<p>Was mir jetzt am einfachsten scheint ist neben der Deklaration gleich ein Null-Initialisiertes Objekt zu definieren was ich dann in den Initialisierungslisten mittels ctor nutze.</p>
<pre><code class="language-cpp">// Deklaration.h
struct Daten
{
   int a;
   int b;
};

const Daten daten_null = {0};
</code></pre>
<pre><code class="language-cpp">#include &quot;Deklaration.h&quot;

class Klasse
{
   private:
     Daten daten;
   public:
     Klasse() : daten(daten_null) {}
};
</code></pre>
<p>Gibt es dagegen etwas einzuwenden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797235</guid><dc:creator><![CDATA[sqrt(-1)]]></dc:creator><pubDate>Fri, 23 Oct 2009 18:29:06 GMT</pubDate></item><item><title><![CDATA[Reply to C&#x2F;C++ Initialisierungslisten on Fri, 23 Oct 2009 18:37:31 GMT]]></title><description><![CDATA[<p>Das brauchst Du in diesem Fall garnicht. Eine explizite Initialisierung eines POD mit leeren Klammern führt zu Value-Initialisierung aller Member, sprich sie werden alle auf 0 gesetzt.</p>
<p>Wenn Du andere Werte als 0 haben möchtest, kannst Du das natürlich so machen. Wenngleich da der Änderungsaufwand nicht unbedingt geringer sein dürfte als wenn Du direkt die Strukturen mit Konstruktoren versiehst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797238</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 23 Oct 2009 18:37:31 GMT</pubDate></item><item><title><![CDATA[Reply to C&#x2F;C++ Initialisierungslisten on Fri, 23 Oct 2009 18:49:25 GMT]]></title><description><![CDATA[<p>Und wie sieht das implizit aus?</p>
<pre><code class="language-cpp">#include &quot;Deklaration.h&quot;

class Klasse
{
   private:
     Daten daten;
   public:
     Klasse() {}
};
</code></pre>
<p>Weil heutzutage scheinbar grundsätzlich Null-Initialisierter Speicher an Objektinstanzen übergeben wird, verliere ich zunehmend die Übersicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797245</guid><dc:creator><![CDATA[sqrt(-1)]]></dc:creator><pubDate>Fri, 23 Oct 2009 18:49:25 GMT</pubDate></item><item><title><![CDATA[Reply to C&#x2F;C++ Initialisierungslisten on Fri, 23 Oct 2009 18:53:30 GMT]]></title><description><![CDATA[<p>In diesem Fall bin ich mir nicht sicher. Folgendes meinte ich mit explizit:</p>
<pre><code class="language-cpp">class Klasse
{
   private:
     Daten daten;
   public:
     Klasse() : daten() {}
};
</code></pre>
<p>Äquivalentes Standalone-Konstrukt:</p>
<pre><code class="language-cpp">Daten daten = Daten();

// in C++ übrigens auch erlaubt und auch Value-Initialisiert, wenn Daten POD ist:
Daten daten = {};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1797247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797247</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 23 Oct 2009 18:53:30 GMT</pubDate></item><item><title><![CDATA[Reply to C&#x2F;C++ Initialisierungslisten on Sat, 24 Oct 2009 11:02:03 GMT]]></title><description><![CDATA[<p>Währe echt super wenn jemand aufklären könnte ob hier eine value-Initialisierung stattfindet oder nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797413</guid><dc:creator><![CDATA[sqrt(-1)]]></dc:creator><pubDate>Sat, 24 Oct 2009 11:02:03 GMT</pubDate></item><item><title><![CDATA[Reply to C&#x2F;C++ Initialisierungslisten on Sat, 24 Oct 2009 12:28:45 GMT]]></title><description><![CDATA[<p>sqrt(-1) schrieb:</p>
<blockquote>
<p>Währe echt super wenn jemand aufklären könnte ob hier eine value-Initialisierung stattfindet oder nicht.</p>
</blockquote>
<p>Meinst du den folgenden Code?</p>
<pre><code class="language-cpp">#include &quot;Deklaration.h&quot;

class Klasse
{
   private:
     Daten daten;
   public:
     Klasse() {}
};
</code></pre>
<p>Wenn der Typ <code>Daten</code> hier ein POD ist, wird die Variable <code>daten</code> <strong>nicht</strong> initialisiert. Ist <code>Daten</code> eine Klasse mit Standardkonstruktor, so wird dieser im <code>Klasse</code> -Konstruktor implizit aufgerufen. Um eine Initialisierung (bei PODs durchgehend mit 0) zu garantieren, nimm LordJaxoms Variante.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797458</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797458</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 24 Oct 2009 12:28:45 GMT</pubDate></item><item><title><![CDATA[Reply to C&#x2F;C++ Initialisierungslisten on Sat, 24 Oct 2009 12:49:46 GMT]]></title><description><![CDATA[<p>OK, und was passiert bei verschachtelten POD Typen? Wird die value-Initialisierung durchgereicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797467</guid><dc:creator><![CDATA[sqrt(-1)]]></dc:creator><pubDate>Sat, 24 Oct 2009 12:49:46 GMT</pubDate></item><item><title><![CDATA[Reply to C&#x2F;C++ Initialisierungslisten on Sat, 24 Oct 2009 14:07:47 GMT]]></title><description><![CDATA[<p>sqrt(-1) schrieb:</p>
<blockquote>
<p>OK, und was passiert bei verschachtelten POD Typen? Wird die value-Initialisierung durchgereicht?</p>
</blockquote>
<p>Was meinst du mit &quot;verschachtelten POD Typen&quot;? Entweder man hat einen Build-In Typen, dann ists klar(wurde ja auch schon genug erklärt) oder ne Klasse und da hat man nen (wenn nicht selbst geschrieben, dann compiler generierten) Standard-Konstruktor<br />
Wenn dus nicht beschreiben kannst, versuchs halt mit Code zu skizzieren^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797493</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sat, 24 Oct 2009 14:07:47 GMT</pubDate></item><item><title><![CDATA[Reply to C&#x2F;C++ Initialisierungslisten on Sat, 24 Oct 2009 14:25:40 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>Was meinst du mit &quot;verschachtelten POD Typen&quot;?</p>
</blockquote>
<p>Er meint sicher sowas in der Art:</p>
<pre><code class="language-cpp">struct Daten
{
    int a;
    double b;
};

class Klasse
{
   private:
     Daten daten;
   public:
     Klasse() : daten() {}
};
</code></pre>
<p>Werden hier daten.a und daten.b korrekt initialisiert? Ich bild mir ein, dafür müsste man in Daten den Standard-Ctor überschreiben, aber genau weiß ich das nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797500</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797500</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Sat, 24 Oct 2009 14:25:40 GMT</pubDate></item><item><title><![CDATA[Reply to C&#x2F;C++ Initialisierungslisten on Sat, 24 Oct 2009 14:39:43 GMT]]></title><description><![CDATA[<p>XMaster, für dein Beispiel wurde bereits beschrieben dass eine value-Initialisierung vorgenommen wird.</p>
<p>Ich meine:</p>
<pre><code class="language-cpp">struct Daten
{
    struct
    {
       int y;
       char text[8];
    }textDaten;

    int a;
    double b;
};

class Klasse
{
   private:
     Daten daten;
   public:
     Klasse() : daten() {}
};
</code></pre>
<p>Wie sieht es denn eigentlich damit aus:</p>
<pre><code class="language-cpp">class Klasse
{
   private:
     int a;
     int b[20];
     int c;
   public:
     Klasse() : a() {}
};
</code></pre>
<p>Soweit ich das bisher angenommen habe müsste b und c eigentlich nicht initialisiert sein. Jedoch ergeben meine Tests das Gegenteil.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797503</guid><dc:creator><![CDATA[sqrt(-1)]]></dc:creator><pubDate>Sat, 24 Oct 2009 14:39:43 GMT</pubDate></item><item><title><![CDATA[Reply to C&#x2F;C++ Initialisierungslisten on Sat, 24 Oct 2009 14:45:44 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>Entweder man hat einen Build-In Typen, dann ists klar [...] oder ne Klasse</p>
</blockquote>
<p>Es gibt nicht nur BuiltIns und Klassentypen in C++. Und selbst bei Klassen kann das Initialisierungsverhalten so unterschiedlich sein, dass es sich nicht auf den ersten Blick ergibt.</p>
<p>XMaster schrieb:</p>
<blockquote>
<p>Werden hier daten.a und daten.b korrekt initialisiert?</p>
</blockquote>
<p>Wenn du mit korrekt null-initialisiert meinst, dann ja.</p>
<p>Sofern ein POD initialisiert wird (über Aggregats-Initialisierungsliste oder Klammersyntax), haben alle Werte einen definierten Wert, welcher der Repräsentation von Null im jeweiligen Bitmuster entspricht, wenn nichts weiter angegeben wird.</p>
<pre><code class="language-cpp">// Sei Daten ein POD-Typ.
Daten a;           // KEINE Initialisierung
Daten b = Daten(); // initialisiert b vollständig mit Nullen.
Daten c = {};      // ebenfalls
</code></pre>
<p>sqrt(-1) schrieb:</p>
<blockquote>
<p>Soweit ich das bisher angenommen habe müsste b und c eigentlich nicht initialisiert sein. Jedoch ergeben meine Tests das Gegenteil.</p>
</blockquote>
<p>Du hast Recht, <code>b</code> und <code>c</code> müssen nicht initialisiert werden. Dass sie es trotzdem zu sein scheinen, ist entweder ein Zusatzfeature des Compilers, oder Zufall. Solche Dinge lassen sich durch Tests nicht wirklich beweisen.</p>
<p>In diesem Zusammenhang sei zudem auf folgenden Thread verwiesen:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-249075.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-249075.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797506</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 24 Oct 2009 14:45:44 GMT</pubDate></item><item><title><![CDATA[Reply to C&#x2F;C++ Initialisierungslisten on Sat, 24 Oct 2009 14:46:00 GMT]]></title><description><![CDATA[<p>Sie enthalten zufällige (undefinierte Daten). Es kann aber sein, dass dein Compiler dir da eine gewisse Initialisierung macht (im Debug Mode von VS z.B)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797507</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 24 Oct 2009 14:46:00 GMT</pubDate></item><item><title><![CDATA[Reply to C&#x2F;C++ Initialisierungslisten on Sat, 24 Oct 2009 14:52:40 GMT]]></title><description><![CDATA[<p>{edit: oh - wieder was dazu gelernt ;D}</p>
<p>sqrt(-1) schrieb:</p>
<blockquote>
<pre><code class="language-cpp">class Klasse
{
   private:
     int a;
     int b[20];
     int c;
   public:
     Klasse() : a() {} //a wird mit int() initialisiert
};
</code></pre>
</blockquote>
<p>also:<br />
a = 0<br />
b[0 ... 20] = {random}<br />
c = {random}</p>
<p>sqrt(-1) schrieb:</p>
<blockquote>
<p>Soweit ich das bisher angenommen habe müsste b und c eigentlich nicht initialisiert sein. Jedoch ergeben meine Tests das Gegenteil</p>
</blockquote>
<p>Viele Compiler initialisieren im Debug-Mode die Variablen trotzdem (MSVC macht das glaube ich z.bsp. auf 0xc{...}c</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797509</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797509</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sat, 24 Oct 2009 14:52:40 GMT</pubDate></item><item><title><![CDATA[Reply to C&#x2F;C++ Initialisierungslisten on Sat, 24 Oct 2009 14:56:57 GMT]]></title><description><![CDATA[<p>&quot;Zufällig&quot; ist in in diesem Kontext eigentlich nicht ganz korrekt, &quot;undefiniert&quot; trifft es besser. Der Begriff der Zufälligkeit legt nahe, dass es sich um ein ähnliches Vorgehen wie beim Würfeln oder bei Pseudozufallsgeneratoren handelt, das stimmt aber nicht. Uninitialisierten Speicher als Quelle von Zufallszahlen zu nehmen ist aus diesem Grund auch sinnfrei (es gibt ab und zu wieder solche Ideen).</p>
<p>Ausserdem denkt man bei &quot;Zufall&quot; an gewisse Eigenschaften wie Gleichverteilung der Werte, wodurch einem eine ständige Null sehr unwahrscheinlich vorkommt. Eine Null kann aber <strong>sehr wohl</strong> auftreten, obwohl <strong>keine Initialisierung</strong> stattgefunden hat. Und zwar, wenn an dieser Speicherstelle noch Nullen stehen (die zum Beispiel aus der Initialisierung eines früheren Objekts resultieren).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797511</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 24 Oct 2009 14:56:57 GMT</pubDate></item><item><title><![CDATA[Reply to C&#x2F;C++ Initialisierungslisten on Sat, 24 Oct 2009 15:02:26 GMT]]></title><description><![CDATA[<p>Ist nun die beschriebene verschachtelte Struktur ein POD Typ und wird im Beipiel komplett mit Null initialisiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797514</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797514</guid><dc:creator><![CDATA[sqrt(-1)]]></dc:creator><pubDate>Sat, 24 Oct 2009 15:02:26 GMT</pubDate></item><item><title><![CDATA[Reply to C&#x2F;C++ Initialisierungslisten on Sat, 24 Oct 2009 15:03:31 GMT]]></title><description><![CDATA[<p>Ich finde &quot;Zufällig&quot; durchaus passend. Man sollte dann aber mal ein wenig über den philosophischen Aspekt von Zufall Gedanken machen. Zufall erlaubt jegliche Kombination in jeglicher Reihenfolge. Wenn ich z.B 1000 mal mit einem Würfel die Zahl 6 würfle, dann ist (besser: kann) das VOLKOMMEN Zufällig sein (sofern er nicht getürkt ist). Durchaus unwahrscheinlich aber möglich. Wenn ich z.B unendlich mal würfle, dann kommt diese Kombination garantiert zu stande.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797515</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 24 Oct 2009 15:03:31 GMT</pubDate></item><item><title><![CDATA[Reply to C&#x2F;C++ Initialisierungslisten on Sat, 24 Oct 2009 15:46:11 GMT]]></title><description><![CDATA[<p>sqrt(-1) schrieb:</p>
<blockquote>
<p>Ist nun die beschriebene verschachtelte Struktur ein POD Typ und wird im Beipiel komplett mit Null initialisiert?</p>
</blockquote>
<p>Wurden dazu nicht bereits genügend Aussagen gemacht? Ausserdem wäre es gut, wenn du sagst, auf welches Beispiel mit welchem verschachtelter Struktur du dich beziehst (schreib nochmals den Code hin).</p>
<p>drakon schrieb:</p>
<blockquote>
<p>Ich finde &quot;Zufällig&quot; durchaus passend. Man sollte dann aber mal ein wenig über den philosophischen Aspekt von Zufall Gedanken machen. Zufall erlaubt jegliche Kombination in jeglicher Reihenfolge. Wenn ich z.B 1000 mal mit einem Würfel die Zahl 6 würfle, dann ist (besser: kann) das VOLKOMMEN Zufällig sein (sofern er nicht getürkt ist). Durchaus unwahrscheinlich aber möglich. Wenn ich z.B unendlich mal würfle, dann kommt diese Kombination garantiert zu stande.</p>
</blockquote>
<p>Ja, aber mit dieser Interpretation wird der Begriff des Zufalls völlig verwaschen, weil dann plötzlich alles zufällig ist, schliesslich kann es ja bei unendlich häufigem Würfeln vorkommen.</p>
<p>Ich finde es wichtig, eine zumindest einigermassen übliche Grenze zu ziehen (d.h. den Unterschied von PRNGs und Würfeln mal beiseite zu lassen, und Quanteneffekte erst recht). Meiner Meinung nach versteht man Zufall umgangssprachlich so, dass jeder Wert eine gleich grosse Chance hat, aufzutreten. Das ist im Beispiel hier eindeutig nicht so und wird auch bei noch so vielen Versuchen nicht so sein (einfach aufgrund der Tatsache, dass der Wert Null eine spezielle Behandlung hat und für viele Dinge als Initial- oder Defaultwert verwendet wird).</p>
<p>Ich habe hier auf die Terminologie hingewiesen, weil im von mir verlinkten Thread eben genau dieser Fehlschluss gemacht wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797537</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 24 Oct 2009 15:46:11 GMT</pubDate></item><item><title><![CDATA[Reply to C&#x2F;C++ Initialisierungslisten on Sat, 24 Oct 2009 15:56:14 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Wurden dazu nicht bereits genügend Aussagen gemacht? Ausserdem wäre es gut, wenn du sagst, auf welches Beispiel mit welchem verschachtelter Struktur du dich beziehst (schreib nochmals den Code hin).</p>
</blockquote>
<p>Ich konnte aus den Antworten nicht herauslesen ob die Struktur &quot;Daten&quot; als POD Typ gilt und hier im Beispiel komplett mit Null initialisiert wird.</p>
<p>sqrt(-1) schrieb:</p>
<blockquote>
<p>Ich meine:</p>
<pre><code class="language-cpp">struct Daten
{
    struct
    {
       int y;
       char text[8];
    }textDaten;

    int a;
    double b;
};

class Klasse
{
   private:
     Daten daten;
   public:
     Klasse() : daten() {}
};
</code></pre>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1797546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797546</guid><dc:creator><![CDATA[sqrt(-1)]]></dc:creator><pubDate>Sat, 24 Oct 2009 15:56:14 GMT</pubDate></item><item><title><![CDATA[Reply to C&#x2F;C++ Initialisierungslisten on Mon, 26 Oct 2009 09:15:09 GMT]]></title><description><![CDATA[<p>Ich habe eben nochmal ohne Erfolg versucht das aus dem Standard rauszulesen.<br />
Währe wirklich toll wenn jemand darauf eine Antwort hätte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1798384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798384</guid><dc:creator><![CDATA[sqrt(-1)]]></dc:creator><pubDate>Mon, 26 Oct 2009 09:15:09 GMT</pubDate></item><item><title><![CDATA[Reply to C&#x2F;C++ Initialisierungslisten on Mon, 26 Oct 2009 14:41:38 GMT]]></title><description><![CDATA[<p>Ja, deine Struktur ist ein POD und wird demnach 'value-initialized' (also mit 0 initialisiert).<br />
Dies gilt rekursiv auch für alle darin enthaltenen Strukturen, d.h. auch y und das char-Array text werden 'genullt'.</p>
<p>Sobald du jedoch innerhalb deiner Struktur einen Nicht-POD-Typ hast, kannst du dich darauf nicht mehr verlassen.<br />
Üblicherweise wird dabai von den Compilern intern 'memset(daten, sizeof(daten), 0)' erzeugt (oder eine ähnliche Funktion) und nicht die einzelnen Strukturmember separat initialisiert.<br />
Stell es dir daher so etwa vor:</p>
<pre><code>if(Daten is POD type)
  WriteAsm(&quot;memset(daten, sizeof(daten), 0);&quot;)
</code></pre>
<p>Wenn du Assemblerkenntnisse hast, dann kannst du ja mal den ASM-Output deiner Klasse anschauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1798597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798597</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Mon, 26 Oct 2009 14:41:38 GMT</pubDate></item></channel></rss>