<?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[Initialisierung von Variablen]]></title><description><![CDATA[<p>Hallo</p>
<p>Unter welchen Voraussetzungen darf ich annehmen, dass eingebaute Typen mit 0 initialisiert werden?</p>
<pre><code>int v0; //hier?
void f()
{
	static int v1; //hier?
	int v2; //hier?
}
struct s
{
	int v3;
};
int main()
{
	s v4; //hier?
	int* v5 = new int; //hier?
	delete v5;
}
template&lt;class T&gt;
void g()
{
	T v6; //hier? (im Falle dass T == int)
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/322154/initialisierung-von-variablen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Jul 2026 08:07:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/322154.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 09 Dec 2013 10:23:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Initialisierung von Variablen on Mon, 09 Dec 2013 10:23:58 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Unter welchen Voraussetzungen darf ich annehmen, dass eingebaute Typen mit 0 initialisiert werden?</p>
<pre><code>int v0; //hier?
void f()
{
	static int v1; //hier?
	int v2; //hier?
}
struct s
{
	int v3;
};
int main()
{
	s v4; //hier?
	int* v5 = new int; //hier?
	delete v5;
}
template&lt;class T&gt;
void g()
{
	T v6; //hier? (im Falle dass T == int)
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2370687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370687</guid><dc:creator><![CDATA[KeineKlassenMachen]]></dc:creator><pubDate>Mon, 09 Dec 2013 10:23:58 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierung von Variablen on Mon, 09 Dec 2013 10:51:37 GMT]]></title><description><![CDATA[<pre><code>int v0; //hier? ja (global)
void f()
{
	static int v1; //hier? ja (statisch)
	int v2; //hier? nein (lokal)
}
struct s
{
	int v3;
};
int main()
{
	s v4; //hier? nein (lokal + POD)
	s v4a = {}; //hier? ja (Aggregat-Initialisierung, bzw. Uniform Initialization in C++11)
	s v4b = s(); //hier? ja (Kopier-Initialisierung)

	int* v5 = new int; //hier? nein
	int* v5a = new int(); //hier? ja
	int* v5b = new int[7]; //hier? nein
	int* v5c = new int[7](); //hier? ja

	delete v5;
	delete v5a;
	delete[] v5b;
	delete[] v5c;
}
template&lt;class T&gt;
void g()
{
	T v6; //hier? nein (immer noch lokal)
}
</code></pre>
<p>Grundsätzlich werden lokale Variablen von skalaren oder POD-Typen nicht initialisiert. Bei Klassen hängt es davon ab, ob ein Defaultkonstruktor definiert ist, der eine allfällige Initialisierung vornimmt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370691</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370691</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 09 Dec 2013 10:51:37 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierung von Variablen on Mon, 09 Dec 2013 10:56:18 GMT]]></title><description><![CDATA[<p>v0 == 0<br />
v1 == 0<br />
v2 undefiniert<br />
v3/v4 undefiniert (Merke: <code>v4 = s()</code> wäre mit 0 initialisiert)<br />
v5 undefiniert (Merke: <code>new int()</code> wäre mit 0 initialisiert)<br />
v6 undefiniert (Merke: <code>v6 = T()</code> wäre mit 0 initialisiert)</p>
<p>Ich hoffe, ich bin selber nicht durcheinander gekommen <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="🙂"
    /> . Merkregel: Objekte mit statischer Lebensdauer werden zero-initialized. Lokale Objekte nicht. Wenn du value-initialized (mit leeren Klammern), so ist dies für POD-Typen eine Initialisierung mit 0.</p>
<p>P.S.:<br />
<a href="http://en.cppreference.com/w/cpp/language/initialization" rel="nofollow">http://en.cppreference.com/w/cpp/language/initialization</a><br />
<a href="http://en.cppreference.com/w/cpp/language/zero_initialization" rel="nofollow">http://en.cppreference.com/w/cpp/language/zero_initialization</a><br />
<a href="http://en.cppreference.com/w/cpp/language/value_initialization" rel="nofollow">http://en.cppreference.com/w/cpp/language/value_initialization</a><br />
<a href="http://stackoverflow.com/questions/3102096/when-do-c-pod-types-get-zero-initialized" rel="nofollow">http://stackoverflow.com/questions/3102096/when-do-c-pod-types-get-zero-initialized</a></p>
<p>edit: Zu langsam.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370693</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 09 Dec 2013 10:56:18 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierung von Variablen on Mon, 09 Dec 2013 10:55:47 GMT]]></title><description><![CDATA[<p>v4b verstehe ich nicht ganz. Der Default-Konstruktor eines POD's initialisiert zwar alle Built-In-Member mit 0, jedoch wird der Default-Konstruktor eines POD's beim Erstellen des POD's nicht aufgerufen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370694</guid><dc:creator><![CDATA[KeineKlassenMachen]]></dc:creator><pubDate>Mon, 09 Dec 2013 10:55:47 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierung von Variablen on Mon, 09 Dec 2013 11:21:32 GMT]]></title><description><![CDATA[<blockquote>
<p>Der Default-Konstruktor eines POD's initialisiert zwar alle Built-In-Member mit 0</p>
</blockquote>
<p>Nein, wieso sollte er?</p>
<p>§5.2.3/2 schrieb:</p>
<blockquote>
<p>The expression T() [...] creates a prvalue of the specified type, whose value is that produced by value-initializing (8.5) an object of type T</p>
</blockquote>
<p>§8.5/8 schrieb:</p>
<blockquote>
<p>To <em>value-initialize</em> an object of type T means:<br />
— if T is a [...] class type without a user-provided or deleted default constructor, then the object is zero-initialized [..]</p>
</blockquote>
<p>§8.5/6 schrieb:</p>
<blockquote>
<p>To <em>zero-initialize</em> an object or reference of type T means:<br />
— if T is a [...] non-union class type, each non-static data member [...] is zero-initialized and padding is initialized to zero bits;</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2370697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370697</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 09 Dec 2013 11:21:32 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierung von Variablen on Mon, 09 Dec 2013 11:28:10 GMT]]></title><description><![CDATA[<p>Ah, ich sehe in den Standard-Quotes, dass da das Verhalten vom generierten Default-Konstruktor ganz anders ist als das vom manuell geschriebenen Default-Konstruktor.</p>
<p>Danke allen für die Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370703</guid><dc:creator><![CDATA[KeineKlassenMachen]]></dc:creator><pubDate>Mon, 09 Dec 2013 11:28:10 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierung von Variablen on Mon, 09 Dec 2013 11:49:29 GMT]]></title><description><![CDATA[<p>KeineKlassenMachen schrieb:</p>
<blockquote>
<p>Ah, ich sehe in den Standard-Quotes, dass da das Verhalten vom generierten Default-Konstruktor ganz anders ist als das vom manuell geschriebenen Default-Konstruktor.</p>
</blockquote>
<p>Würde ich so nicht sagen. Der compilergenerierte Defaultkonstruktor entspricht einem leeren, manuell definierten Defaultkonstruktor. Damit das Verhalten anders ist, musst du explizit Variablen initialisieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370711</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 09 Dec 2013 11:49:29 GMT</pubDate></item></channel></rss>