<?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[Kann man in einem Ctor einen anderen, überladenen Ctor aufrufen?]]></title><description><![CDATA[<pre><code class="language-cpp">class Test
{
public:
Test() { ... }
Test(int x) : m_x(x) { Test() }
</code></pre>
<p>Geht sowas?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/212194/kann-man-in-einem-ctor-einen-anderen-überladenen-ctor-aufrufen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 17:24:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/212194.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 02 May 2008 20:04:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kann man in einem Ctor einen anderen, überladenen Ctor aufrufen? on Fri, 02 May 2008 20:04:46 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class Test
{
public:
Test() { ... }
Test(int x) : m_x(x) { Test() }
</code></pre>
<p>Geht sowas?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502307</guid><dc:creator><![CDATA[Ctor]]></dc:creator><pubDate>Fri, 02 May 2008 20:04:46 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man in einem Ctor einen anderen, überladenen Ctor aufrufen? on Fri, 02 May 2008 20:24:25 GMT]]></title><description><![CDATA[<p>Nope.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502323</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Fri, 02 May 2008 20:24:25 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man in einem Ctor einen anderen, überladenen Ctor aufrufen? on Fri, 02 May 2008 21:29:01 GMT]]></title><description><![CDATA[<p>Lösung: schreib ne private Methode die du in beiden Ctoren aufrufst und die den gemeinsamen Code enthält</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502343</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 02 May 2008 21:29:01 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man in einem Ctor einen anderen, überladenen Ctor aufrufen? on Fri, 02 May 2008 23:16:43 GMT]]></title><description><![CDATA[<p>Konstruktoren kann man nie aufrufen wie methoden, eine alternative wäre vieleicht vererbung, denn den Konstruktor der Basisklasse kann man im Konstruktor der Abgeleiteten Klasse aufrufen.</p>
<pre><code class="language-cpp">class A{
public:
    A(int wert){}
}

classB: public A{
public:
   B(int w1, int w2): A(w1){}
}
</code></pre>
<p>nun wird der Konstruktor von A in B aufgerufen, allerdings muss das Objekt der Klasse A bereits Existieren, bevor der Konstruktor aufgerufen werden kann, deshalb steht der Ausdruck auch vor der Klammer des Konstruktors.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502381</guid><dc:creator><![CDATA[Krux]]></dc:creator><pubDate>Fri, 02 May 2008 23:16:43 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man in einem Ctor einen anderen, überladenen Ctor aufrufen? on Fri, 02 May 2008 23:27:57 GMT]]></title><description><![CDATA[<p>Danke.</p>
<p>Ich habe heute nämlich gesehen, dass in C# sowas möglich ist. Da haben meine Frickelsensoren alarm geschlagen, wer sowas macht. Und weil ich gerne immer wieder C++ zum Vergleich heranziehe (nette Möglichkeit, vorhandenes Wissen nochmal zu prüfen), hab ich mich gefragt, ob das eben auch geht.</p>
<p>Danke nochmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502386</guid><dc:creator><![CDATA[Ctor]]></dc:creator><pubDate>Fri, 02 May 2008 23:27:57 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man in einem Ctor einen anderen, überladenen Ctor aufrufen? on Sat, 03 May 2008 00:04:39 GMT]]></title><description><![CDATA[<p>Ergänzung: das was du geschrieben hast wird compilieren, allerdings wird nicht das passieren was du möchtest. (Davon abgesehen dass du ein &quot;;&quot; vergessen hast, aber wenn du das ergänzt würde es compilieren.)</p>
<p>Was passieren wird ist dass beim Aufruf von &quot;Test::Test(int x)&quot; zuerst &quot;Test::m_x&quot; initialisiert wird, und dann wird ein unbenanntes Objekt vom Typ &quot;Test&quot; angelegt (unter verwendeung des ctor &quot;Test::Test()&quot;, und gleich wieder zerstört.</p>
<p>IIRC gibt es ein Proposal den Aufruf von Konstruktoren aus anderen Konstruktoren zu erlauben. Die Syntax sieht dabei dann aber anders aus. IIRC ca. so:</p>
<pre><code class="language-cpp">class Test
{
public:
    Test() { ... }
    Test(int x) : Test() { m_x = x; }  
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1502394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502394</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 03 May 2008 00:04:39 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man in einem Ctor einen anderen, überladenen Ctor aufrufen? on Sat, 03 May 2008 00:16:44 GMT]]></title><description><![CDATA[<p>Ne, ich hab nicht nur das Semikolon, sondern auch die schließende Klammer der Klasse vergessen. <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="🙂"
    /><br />
Ja, genau so wird in C# auch ein Konstruktur aus einem anderen heraus aufgerufen. Ich finde das aber absolut hässlich und sinnlos. Wenn zwei Konstruktoren gemeinsamen Code haben, finde ich die bereits erwähnte (private) gemeinsame Methode optimal. Wenn sich die Konstruktoren gegenseitig aufrufen, resultiert das doch zwangläufig in Frickelcode... und es ist eben unnötig.</p>
<p>C# scheint mir aber ohnehin voll die Frickelsprache zu sein. Gerade lese ich von den Destruktoren, dass die durch den GC erst zu einem unbestimmten Zeitpunkt aufgerufen werden. Deshalb gibt es das Interface IDispose, das einen Destruktor-Ersatz als Methode bereitstellt, damit der Benutzer ihn (den Destruktor) gewissermaßen direkt aufrufen kann. Dann muss man den GC aber mitteilen, dass der den Destruktor nicht mehr aufrufen darf, alternativ könnte man den GC noch per Hand anstoßen, damit er aufräumt.</p>
<p>Mir gefällt es nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502399</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502399</guid><dc:creator><![CDATA[Ctor]]></dc:creator><pubDate>Sat, 03 May 2008 00:16:44 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man in einem Ctor einen anderen, überladenen Ctor aufrufen? on Sat, 03 May 2008 00:39:18 GMT]]></title><description><![CDATA[<p>wird in C++09 möglich sein. (&quot;delegate constructors&quot; IIRC)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502403</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Sat, 03 May 2008 00:39:18 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man in einem Ctor einen anderen, überladenen Ctor aufrufen? on Sun, 04 May 2008 11:22:44 GMT]]></title><description><![CDATA[<blockquote>
<p>C# scheint mir aber ohnehin voll die Frickelsprache zu sein. Gerade lese ich von den Destruktoren, dass die durch den GC erst zu einem unbestimmten Zeitpunkt aufgerufen werden. Deshalb gibt es das Interface IDispose, das einen Destruktor-Ersatz als Methode bereitstellt, damit der Benutzer ihn (den Destruktor) gewissermaßen direkt aufrufen kann.</p>
</blockquote>
<p>Das hat nichts damit zu tun dass C# &quot;frickelig&quot; ist, sondern einfach damit dass C# GC verwendet. Da aber nicht alle Resourcen vom GC kontrolliert werden, und manche Resourcen deterministisch freigegeben werden müssen (Files, Datenbank Connections, ...), muss man sowas wie IDisposable verwenden.</p>
<blockquote>
<p>Dann muss man den GC aber mitteilen, dass der den Destruktor nicht mehr aufrufen darf, alternativ könnte man den GC noch per Hand anstoßen, damit er aufräumt.</p>
</blockquote>
<p>Nö, man muss dem GC garnix mitteilen. Es ist bloss effizienter wenn man es tut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502995</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 04 May 2008 11:22:44 GMT</pubDate></item></channel></rss>