<?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[Frage zu default parameter in Konstruktoren bei vererbung?]]></title><description><![CDATA[<pre><code class="language-cpp">class A{
 int m_i;

A(int i=0) : m_i(i){}

};

class B: public A{

 B(int i=0) : A(i){}

};
</code></pre>
<p>in dem Beispiel könnte ich ja bei klasse A (das i=0) weglassen wenn sie Abstraktir wäre.. wenn es nich so wäre muss ich es wie im beispiel machen oder? gibts andere möglichkeiten?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/187686/frage-zu-default-parameter-in-konstruktoren-bei-vererbung</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 19:16:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/187686.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 23 Jul 2007 05:19:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu default parameter in Konstruktoren bei vererbung? on Mon, 23 Jul 2007 05:19:24 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class A{
 int m_i;

A(int i=0) : m_i(i){}

};

class B: public A{

 B(int i=0) : A(i){}

};
</code></pre>
<p>in dem Beispiel könnte ich ja bei klasse A (das i=0) weglassen wenn sie Abstraktir wäre.. wenn es nich so wäre muss ich es wie im beispiel machen oder? gibts andere möglichkeiten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330493</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 23 Jul 2007 05:19:24 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu default parameter in Konstruktoren bei vererbung? on Mon, 23 Jul 2007 06:10:36 GMT]]></title><description><![CDATA[<p>Du brauchst in dem Fall den Konstruktor A in der Initialisationsliste von B nicht aufrufen. Ansonsten versteh ich nich was du gern anders hättest. Du musst m_i natürlich nicht initialisieren, aber ob das so viel Sinn macht sei mal dahin gestellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330512</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Mon, 23 Jul 2007 06:10:36 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu default parameter in Konstruktoren bei vererbung? on Mon, 23 Jul 2007 06:13:56 GMT]]></title><description><![CDATA[<p>wenn ich aber eine instanz B erzeuge mit einem wert für i.. kann ich A ja nich in der initialissieungsliste weg lassen!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330515</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 23 Jul 2007 06:13:56 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu default parameter in Konstruktoren bei vererbung? on Mon, 23 Jul 2007 06:17:42 GMT]]></title><description><![CDATA[<p>Doch, nur wird dann halt A( int ) mit dem Defaultwert für i aufgerufen! <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330518</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330518</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Mon, 23 Jul 2007 06:17:42 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu default parameter in Konstruktoren bei vererbung? on Mon, 23 Jul 2007 06:20:13 GMT]]></title><description><![CDATA[<p>d.h. m_i ist immer 0 wenn ich instanzen B obj(n!=0); erzeuge?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330521</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 23 Jul 2007 06:20:13 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu default parameter in Konstruktoren bei vererbung? on Mon, 23 Jul 2007 06:22:29 GMT]]></title><description><![CDATA[<p>Nur wenn du A( i ) aus der Initialisationsliste streichst. Dann wird der Standardkonstruktor aufgerufen, in dem Fall dein A( i = 0 ) (wegen dem default Parameter).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330524</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Mon, 23 Jul 2007 06:22:29 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu default parameter in Konstruktoren bei vererbung? on Mon, 23 Jul 2007 06:24:23 GMT]]></title><description><![CDATA[<p>ok ich meinte halt das bei so einer klassenstruktur nötig ist für A und B den default wert anzugeben!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330526</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 23 Jul 2007 06:24:23 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu default parameter in Konstruktoren bei vererbung? on Mon, 23 Jul 2007 06:25:57 GMT]]></title><description><![CDATA[<p>Nein, ist nicht notwendig. Du schlägst dadurch nur zwei Fliegen mit einer Klappe (muss nicht unbedingt Sinnvoll sein), weil deine Konstruktoren B( int ) gleichzeitig Standardkonstruktoren sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330529</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Mon, 23 Jul 2007 06:25:57 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu default parameter in Konstruktoren bei vererbung? on Mon, 23 Jul 2007 13:17:27 GMT]]></title><description><![CDATA[<p>Wenn du jetzt immer nur Tochterklassen von A benutzt, die immer den Konstruktor von A explizit aufrufen, genau dann ist der default Wert fuer A(i = 0) ueberfluessig, da er ja nie benutzt wird. Solltest du ihn aber weglassen, dann solltest du den Konstruktor von A immer aufrufen, sowohl bei abgeleiteten Klassen als auch wenn du Instanzen der Klasse A direkt verwendest. Denn andernfalls wird dann der vom Compiler generierte default-Konstruktor verwendet, der m_i uninitilaisiert laesst. Und das kann spaeter zu (vermeintlich) wunderlichem Verhalten fuehren, wenn m_i ploetlzlich &quot;voellig unmotiviert&quot; Zufallswerte in meist astronomischer Hoehe annimmt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330836</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 23 Jul 2007 13:17:27 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu default parameter in Konstruktoren bei vererbung? on Mon, 23 Jul 2007 13:28:21 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Denn andernfalls wird dann der vom Compiler generierte default-Konstruktor verwendet, der m_i uninitilaisiert laesst. Und das kann spaeter zu (vermeintlich) wunderlichem Verhalten fuehren, wenn m_i ploetlzlich &quot;voellig unmotiviert&quot; Zufallswerte in meist astronomischer Hoehe annimmt.</p>
</blockquote>
<p>Um die Dramatik dieser Ausführungen etwas zu reduzieren - der Compiler generiert nur dann einen eigenen Default-Ctor, wenn die Klasse gar keinen selbsgschriebenen Ctor hat. Das bedeutet, wenn du den Default-Parameter auslässt, gibt es keinen Default-Ctor und du mußt beim Anlegen eines A-Objektes IMMER einen Parameter mitgeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330844</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 23 Jul 2007 13:28:21 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu default parameter in Konstruktoren bei vererbung? on Mon, 23 Jul 2007 13:36:47 GMT]]></title><description><![CDATA[<p>Oops. Okay, dann kriegst du bei Nichtverwendung des Konstruktors ohne Defaultparameter schon zur Compile-Zeit eine Fehlermeldung <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="😉"
    /></p>
<p>Du kannst natuerlich den default-Parameter weglassen und einen Default-Konstruktor liefern, in dem du dann m_i initialisierst (vermutlich mit 0). Aber das haette den gleichen Effekt wie der implizite default-Konstruktor, den du durch den default-Parameter geschaffen hast. Beides zu liefern waere uebrigens auch bestenfalls sinnlos; ich bin mir nicht ganz sicher ob der Compiler einfach den echten default Konstruktor bevorzugt (womit der default Parameter obsolet waere) oder ob du bei der Verwendung einen Fehler wegen der Zweideutigkeit bekommst (ich vermute letzteres).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330853</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 23 Jul 2007 13:36:47 GMT</pubDate></item></channel></rss>