<?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 und Zeiger]]></title><description><![CDATA[<p>Wie verwendet man Zeiger in Initialisieurngslisten?</p>
<p>Kann man sowas schreiben wie</p>
<pre><code class="language-cpp">class Zeiger;

class tolle_klasse
{
    Zeiger* zeiger;
}

tolle_klasse::tolle_klasse(): zeiger(new zeiger()){}
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/262179/initialisierungsliste-und-zeiger</link><generator>RSS for Node</generator><lastBuildDate>Sun, 06 Sep 2026 21:48:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/262179.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 02 Mar 2010 09:16:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Initialisierungsliste und Zeiger on Tue, 02 Mar 2010 09:16:30 GMT]]></title><description><![CDATA[<p>Wie verwendet man Zeiger in Initialisieurngslisten?</p>
<p>Kann man sowas schreiben wie</p>
<pre><code class="language-cpp">class Zeiger;

class tolle_klasse
{
    Zeiger* zeiger;
}

tolle_klasse::tolle_klasse(): zeiger(new zeiger()){}
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1863124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1863124</guid><dc:creator><![CDATA[shisha]]></dc:creator><pubDate>Tue, 02 Mar 2010 09:16:30 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierungsliste und Zeiger on Tue, 02 Mar 2010 09:21:09 GMT]]></title><description><![CDATA[<p>Da spricht meiner Meinung nach nichts dagegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1863129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1863129</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 02 Mar 2010 09:21:09 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierungsliste und Zeiger on Tue, 02 Mar 2010 09:21:19 GMT]]></title><description><![CDATA[<p>Mann könnte dir hier die Antwort sagen. Aber! Vorschlag. Probier es aus. Wenn du es selbst probierst behältst du es besser</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1863131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1863131</guid><dc:creator><![CDATA[sirchillalot]]></dc:creator><pubDate>Tue, 02 Mar 2010 09:21:19 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierungsliste und Zeiger on Tue, 02 Mar 2010 09:27:53 GMT]]></title><description><![CDATA[<p>sirchillalot schrieb:</p>
<blockquote>
<p>Mann könnte dir hier die Antwort sagen. Aber! Vorschlag. Probier es aus. Wenn du es selbst probierst behältst du es besser</p>
</blockquote>
<p>der hat mir grad etwas meiner meinung nach unmögliches durchgehn lassen:</p>
<pre><code class="language-cpp">class zeiger
{    
    int a;
    zeiger(int _a);
}

class nutzer
{
    zeiger* x;
    nutzer(): zeiger(){}
</code></pre>
<p>deswegen die frage,<br />
nochmal grundlagen-ffrage am rande:</p>
<p>muss man konstruktoren auch virtuell anlegen wenn man vererben will und polymorphie braucht?</p>
<p>finde hier nur beispiele von virtuellen funktionen, destruktor ist mir klar aber konstruktor?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1863145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1863145</guid><dc:creator><![CDATA[shisha]]></dc:creator><pubDate>Tue, 02 Mar 2010 09:27:53 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierungsliste und Zeiger on Tue, 02 Mar 2010 09:37:02 GMT]]></title><description><![CDATA[<p>shisha schrieb:</p>
<blockquote>
<p>Kann man sowas schreiben wie</p>
<pre><code class="language-cpp">class Zeiger;

class tolle_klasse
{
    Zeiger* zeiger;
}

tolle_klasse::tolle_klasse(): zeiger(new zeiger()){}
</code></pre>
</blockquote>
<p>Klar kann man das schreiben, du hast es ja schon geschrieben <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 />
Der Compiler wird es auch schlucken.<br />
Und es wird auch das passieren was du erwartest.<br />
So lange bis du mehrere Zeiger auf die Weise initialisierst und bei einem davon eine Exception fliegt, Bsp:</p>
<pre><code class="language-cpp">class LeakCreator
{
  NormalClass* pn;
  ExceptionThrowingBatard* pb;

  LeakCreator() 
    : pn(new NormalClass())
    , pb(new ExceptionThrowingBastard())
  {}

  ~LeakCreator()
  {
    delete pb;
    delete pn;
  }
};
</code></pre>
<p>Was passiert hier? pn wird ganz normal initialisiert, d.h. es wird ein neues Objekt vom Typ NormalClass erzeugt und pn zeigt darauf. Bei der Initialisierung von pb schmeißt der Konstruktor von ExceptionThrowingBastard wie erwähnt eine Exception. Gottseidank wird der von <code>operator new</code> bereits besorgte Speicher dann wieder freigegen, die Exception segelt allerdings weiter, heraus aus dem Ctor von LeakCreator. Da jetzt aber der Konstruktor-Rumpf nie erreicht wurde, d.h. die Initialisierung nie vollständig erfolgt ist, wird auch der Destruktor nicht aufgerufen. pn geht einfach verloren und wenn der Rechner nicht gestorben ist, lebt die NormalClass-Instanz noch heute.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1863155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1863155</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 02 Mar 2010 09:37:02 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierungsliste und Zeiger on Tue, 02 Mar 2010 09:39:20 GMT]]></title><description><![CDATA[<p>shisha schrieb:</p>
<blockquote>
<p>der hat mir grad etwas meiner meinung nach unmögliches durchgehn lassen:</p>
<pre><code class="language-cpp">...
</code></pre>
</blockquote>
<p>Was ist daran deiner Meinung nach nicht möglich?</p>
<blockquote>
<p>nochmal grundlagen-ffrage am rande:</p>
<p>muss man konstruktoren auch virtuell anlegen wenn man vererben will und polymorphie braucht?</p>
<p>finde hier nur beispiele von virtuellen funktionen, destruktor ist mir klar aber konstruktor?!</p>
</blockquote>
<p>Konstruktoren können nicht virtuell sein. Zum Zeitpunkt der Konstruktion gibst du ja auch nicht den Basisklassentyp an sondern den tatsächlichen Typ den du erzeugst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1863157</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1863157</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 02 Mar 2010 09:39:20 GMT</pubDate></item></channel></rss>