<?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[Konstruktorverhalten nicht nachvollziehbar]]></title><description><![CDATA[<p>Ich habe eine Klasse mit zwei Konstruktoren, einer davon ist der Default-ctor()</p>
<pre><code class="language-cpp">class Foo{
Foo();
Foo(int);
};
}
</code></pre>
<p>Wenn der Zweite Konstruktor aufgerufen wird soll eigentlich genau das passieren, was im ersten passiert, nur das int noch mitgespeichert wird.<br />
Also dachte ich mir, dass ich ihn so realisiere:</p>
<pre><code class="language-cpp">Foo::Foo(int i)
{
Foo()
m_i = i;
}
</code></pre>
<p>Foo() wird auch aufgerufen und die Klasse richtig initialisiert, aber sobald Foo() verlassen wird steht wieder Müll in den Variablen. Wieso?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/147737/konstruktorverhalten-nicht-nachvollziehbar</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 09:38:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/147737.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 19 May 2006 12:40:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Konstruktorverhalten nicht nachvollziehbar on Fri, 19 May 2006 12:40:13 GMT]]></title><description><![CDATA[<p>Ich habe eine Klasse mit zwei Konstruktoren, einer davon ist der Default-ctor()</p>
<pre><code class="language-cpp">class Foo{
Foo();
Foo(int);
};
}
</code></pre>
<p>Wenn der Zweite Konstruktor aufgerufen wird soll eigentlich genau das passieren, was im ersten passiert, nur das int noch mitgespeichert wird.<br />
Also dachte ich mir, dass ich ihn so realisiere:</p>
<pre><code class="language-cpp">Foo::Foo(int i)
{
Foo()
m_i = i;
}
</code></pre>
<p>Foo() wird auch aufgerufen und die Klasse richtig initialisiert, aber sobald Foo() verlassen wird steht wieder Müll in den Variablen. Wieso?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1060941</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1060941</guid><dc:creator><![CDATA[dtor]]></dc:creator><pubDate>Fri, 19 May 2006 12:40:13 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktorverhalten nicht nachvollziehbar on Fri, 19 May 2006 12:47:52 GMT]]></title><description><![CDATA[<p>Konstruktoren können sich nicht gegenseitig aufrufen - der Aufruf im int-Ctor erzeugt ein temporäres Objekt, das sofort wieder zerstört wird.</p>
<p>Du könntest höchstens die Initialisierung in eine gesonderte Methode auslagern, die von beiden Ctoren aufgerufen wird:</p>
<pre><code class="language-cpp">class Foo
{
public:
  Foo()
  {init();}
  Foo(int v)
  {
    init();
    m_iv = v;
  }
private:
  void init();
  int m_iv;
  ...
}
</code></pre>
<p>(oder du verwendest Default-Parameter &quot;Foo(int v=0);&quot;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1060949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1060949</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 19 May 2006 12:47:52 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktorverhalten nicht nachvollziehbar on Fri, 19 May 2006 12:50:41 GMT]]></title><description><![CDATA[<p>ah ok, danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1060954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1060954</guid><dc:creator><![CDATA[dtor]]></dc:creator><pubDate>Fri, 19 May 2006 12:50:41 GMT</pubDate></item></channel></rss>