<?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[Init-Liste Konstruktor]]></title><description><![CDATA[<p>Hallo miteinander ich hätte eine Frage zu folgenden Code<br />
B(char *IStr1) : Str1(IStr1) {};<br />
C(char *IStr1, char *IStr2) : B(IStr1), StrC (IStr2) {};<br />
D(char *IStr1, char *IStr2, char *IStr3) : C(IStr1, IStr2), StrD</p>
<p>Was bewirken diese Konstruktoren??</p>
<p>Vielen Dank für eure Hilfe!</p>
<p>#include &lt;iostream&gt;<br />
#include &lt;iomanip&gt;<br />
#include &lt;string.h&gt;<br />
#include &lt;math.h&gt;<br />
#include &lt;stdlib.h&gt;</p>
<p>using namespace std;</p>
<p>class A<br />
{<br />
public:<br />
virtual void Func1() = 0;<br />
};</p>
<p>class B : public A<br />
{<br />
private:<br />
char * StrB;<br />
public:<br />
B(char *IStr1) : Str1(IStr1) {};<br />
virtual void Func1();<br />
};<br />
class C : public B<br />
{<br />
private:<br />
char *StrC;<br />
public:<br />
C(char *IStr1, char *IStr2) : B(IStr1), StrC (IStr2) {};<br />
virtual void Func1();<br />
};</p>
<p>class D : public C<br />
{<br />
private:<br />
char *StrD;<br />
public:<br />
D(char *IStr1, char *IStr2, char *IStr3) : C(IStr1, IStr2), StrD(IStr3){};<br />
virtual void Func1();<br />
};</p>
<p>void B::Func1()<br />
{<br />
cout &lt;&lt; StrB &lt;&lt; endl;<br />
}</p>
<p>void C::Func1()<br />
{<br />
cout &lt;&lt; StrC &lt;&lt; &quot; &quot;;<br />
B::Func1();<br />
}</p>
<p>void D::Func1()<br />
{<br />
cout &lt;&lt; StrD &lt;&lt; &quot; &quot;;<br />
C::Func1();<br />
}</p>
<p>int main()<br />
{<br />
A * Avec[3];<br />
B b(&quot;Hello&quot;), *b_ptr = &amp;b;<br />
C c(&quot;Test&quot;, &quot;Hi&quot;), *c_ptr = &amp;c;<br />
D d(&quot;XYZ&quot;, &quot;to&quot;, &quot;Welcome&quot;), *d_ptr = &amp;d;<br />
//(1)</p>
<p>Avec[0] = b_ptr;<br />
Avec[1] = c_ptr;<br />
Avec[2] = d_ptr;</p>
<p>for (int i = 0; i &lt; 3; i++)<br />
Avec[i]-&gt;Func1();<br />
return 0;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/256777/init-liste-konstruktor</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 04:39:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/256777.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 17 Dec 2009 18:45:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Init-Liste Konstruktor on Thu, 17 Dec 2009 18:45:27 GMT]]></title><description><![CDATA[<p>Hallo miteinander ich hätte eine Frage zu folgenden Code<br />
B(char *IStr1) : Str1(IStr1) {};<br />
C(char *IStr1, char *IStr2) : B(IStr1), StrC (IStr2) {};<br />
D(char *IStr1, char *IStr2, char *IStr3) : C(IStr1, IStr2), StrD</p>
<p>Was bewirken diese Konstruktoren??</p>
<p>Vielen Dank für eure Hilfe!</p>
<p>#include &lt;iostream&gt;<br />
#include &lt;iomanip&gt;<br />
#include &lt;string.h&gt;<br />
#include &lt;math.h&gt;<br />
#include &lt;stdlib.h&gt;</p>
<p>using namespace std;</p>
<p>class A<br />
{<br />
public:<br />
virtual void Func1() = 0;<br />
};</p>
<p>class B : public A<br />
{<br />
private:<br />
char * StrB;<br />
public:<br />
B(char *IStr1) : Str1(IStr1) {};<br />
virtual void Func1();<br />
};<br />
class C : public B<br />
{<br />
private:<br />
char *StrC;<br />
public:<br />
C(char *IStr1, char *IStr2) : B(IStr1), StrC (IStr2) {};<br />
virtual void Func1();<br />
};</p>
<p>class D : public C<br />
{<br />
private:<br />
char *StrD;<br />
public:<br />
D(char *IStr1, char *IStr2, char *IStr3) : C(IStr1, IStr2), StrD(IStr3){};<br />
virtual void Func1();<br />
};</p>
<p>void B::Func1()<br />
{<br />
cout &lt;&lt; StrB &lt;&lt; endl;<br />
}</p>
<p>void C::Func1()<br />
{<br />
cout &lt;&lt; StrC &lt;&lt; &quot; &quot;;<br />
B::Func1();<br />
}</p>
<p>void D::Func1()<br />
{<br />
cout &lt;&lt; StrD &lt;&lt; &quot; &quot;;<br />
C::Func1();<br />
}</p>
<p>int main()<br />
{<br />
A * Avec[3];<br />
B b(&quot;Hello&quot;), *b_ptr = &amp;b;<br />
C c(&quot;Test&quot;, &quot;Hi&quot;), *c_ptr = &amp;c;<br />
D d(&quot;XYZ&quot;, &quot;to&quot;, &quot;Welcome&quot;), *d_ptr = &amp;d;<br />
//(1)</p>
<p>Avec[0] = b_ptr;<br />
Avec[1] = c_ptr;<br />
Avec[2] = d_ptr;</p>
<p>for (int i = 0; i &lt; 3; i++)<br />
Avec[i]-&gt;Func1();<br />
return 0;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1824118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1824118</guid><dc:creator><![CDATA[matzehilto]]></dc:creator><pubDate>Thu, 17 Dec 2009 18:45:27 GMT</pubDate></item><item><title><![CDATA[Reply to Init-Liste Konstruktor on Thu, 17 Dec 2009 19:34:45 GMT]]></title><description><![CDATA[<p>Sie setzen die Werte der Member?</p>
<p>Was genau ist dir denn unklar?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1824143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1824143</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 17 Dec 2009 19:34:45 GMT</pubDate></item><item><title><![CDATA[Reply to Init-Liste Konstruktor on Thu, 17 Dec 2009 20:03:58 GMT]]></title><description><![CDATA[<p>Ich hab noch nen Fehler gefunden des muss<br />
B(char *IStr1) : StrB(IStr1) {}; heißen nicht<br />
B(char *IStr1) : Str1(IStr1) {}; da ja Str1 kein Member von B ist</p>
<p>des bedeutet jetzt das der StrB mit dem Zeiger IStr1 initialisiert wurde?</p>
<p>Wies kann ich des nicht im Rumpf realisieren?</p>
<p>B()<br />
{<br />
char *IStr1;<br />
StrB = IStr1;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1824162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1824162</guid><dc:creator><![CDATA[matzehilto]]></dc:creator><pubDate>Thu, 17 Dec 2009 20:03:58 GMT</pubDate></item><item><title><![CDATA[Reply to Init-Liste Konstruktor on Thu, 17 Dec 2009 20:23:41 GMT]]></title><description><![CDATA[<p>matzehilto schrieb:</p>
<blockquote>
<p>des bedeutet jetzt das der StrB mit dem Zeiger IStr1 initialisiert wurde?</p>
</blockquote>
<p>Es wird der Konstruktor von StrB mit dem Argument IStr1 aufgerufen. Da es sich bei Str1 um einen eingebauten Datentyp handelt (hier char *), bedeutet das einfach, dass StrB den Wert IStr1 annimmt. Bei eigenen Klassen kann im Konstruktor aber durchaus komplexeres passieren.</p>
<blockquote>
<p>Wies kann ich des nicht im Rumpf realisieren?</p>
</blockquote>
<p>Das kannst du schon machen. Aber warum erst den Standardkonstruktor und hinterher den Zuweisungsoperator aufrufen, wenn ein einfacher Aufruf des richtigen Konstruktors das gewünschte Ergebnis ohne Umweg bringt?</p>
<p>edit: Und noch ein Stichwort zum Thema, dass dir anscheinend fehlt: Initialisierungsliste</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1824180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1824180</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 17 Dec 2009 20:23:41 GMT</pubDate></item><item><title><![CDATA[Reply to Init-Liste Konstruktor on Thu, 17 Dec 2009 20:43:51 GMT]]></title><description><![CDATA[<p>Zitat:<br />
Es wird der Konstruktor von StrB mit dem Argument IStr1 aufgerufen.</p>
<p>Wie kann ein Konstruktor von StrB aufgerufen werden? Des ist doch nur ein Zeiger vom Typ char?</p>
<p>Ich hab des jetzt verstanden das des besser ist mit der Initialisierungsliste zu machen.</p>
<p>Danke für deine Hilfe!!<br />
Bin noch blutiger Anfänger und eigentlich Elektrotechniker und kein Informatiker muss jedoch zwangsläufig des ganze drauf haben, da im Januar ne Info Klausur ansteht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1824194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1824194</guid><dc:creator><![CDATA[matzehilto]]></dc:creator><pubDate>Thu, 17 Dec 2009 20:43:51 GMT</pubDate></item><item><title><![CDATA[Reply to Init-Liste Konstruktor on Thu, 17 Dec 2009 20:49:14 GMT]]></title><description><![CDATA[<p>matzehilto schrieb:</p>
<blockquote>
<p>Wie kann ein Konstruktor von StrB aufgerufen werden? Des ist doch nur ein Zeiger vom Typ char?</p>
</blockquote>
<p>Erwischt <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 />
Du hast natürlich Recht, dass die eingebauten Datentypen keinen richtigen Konstruktor haben. Aber sie bieten aus Konsistenzgründen genau die gleiche Syntax wie eine richtige Klasse mit Konstruktor an. In diesem Fall erfolgt dann einfach eine Zuweisung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1824200</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1824200</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 17 Dec 2009 20:49:14 GMT</pubDate></item><item><title><![CDATA[Reply to Init-Liste Konstruktor on Thu, 17 Dec 2009 20:52:10 GMT]]></title><description><![CDATA[<p>Okay ich denk so einigermaßen hab ich des jetzt verstanden.</p>
<p>Nochmals DANKE!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1824204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1824204</guid><dc:creator><![CDATA[matzehilto]]></dc:creator><pubDate>Thu, 17 Dec 2009 20:52:10 GMT</pubDate></item></channel></rss>