<?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[konstruktor]]></title><description><![CDATA[<p>hier in meinem buch wird der konstruktor ganz fachlich komisch beschrieben, kann mri den mal jemand in umgangsprache erklären:</p>
<p>konstruktor ist doch das ding, was die klassenelemente defaults gibt richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/257863/konstruktor</link><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 18:47:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/257863.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 04 Jan 2010 11:01:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to konstruktor on Mon, 04 Jan 2010 11:01:50 GMT]]></title><description><![CDATA[<p>hier in meinem buch wird der konstruktor ganz fachlich komisch beschrieben, kann mri den mal jemand in umgangsprache erklären:</p>
<p>konstruktor ist doch das ding, was die klassenelemente defaults gibt richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1832040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1832040</guid><dc:creator><![CDATA[konirei]]></dc:creator><pubDate>Mon, 04 Jan 2010 11:01:50 GMT</pubDate></item><item><title><![CDATA[Reply to konstruktor on Mon, 04 Jan 2010 11:06:33 GMT]]></title><description><![CDATA[<p>ein Konstruktor erstellt Objekte einer Klasse und kopiert zB Parameter.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">class Auto//Klasse
{
string Marke;
//Konstruktor:
Auto(string marke)
{
Marke=marke;//hier wird das Parameter Marke des erstellten Autos gesetzt
}
};

int main()
{
//Aufruf des Konstruktors:
Auto auto1=new Auto(&quot;BMW&quot;);
}
</code></pre>
<p>mfg,<br />
andi01.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1832044</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1832044</guid><dc:creator><![CDATA[andi01]]></dc:creator><pubDate>Mon, 04 Jan 2010 11:06:33 GMT</pubDate></item><item><title><![CDATA[Reply to konstruktor on Mon, 04 Jan 2010 11:05:42 GMT]]></title><description><![CDATA[<p>Der Konstruktor einer KLasse ist dazu da, Standartwerte zu vergeben. Er hilft, das gewünschte Objekt zu erzeugen. Analog daszu gibt es den Destruktor, der für die Zerstörung des Objektes zuständig ist.</p>
<p>lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1832045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1832045</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Mon, 04 Jan 2010 11:05:42 GMT</pubDate></item><item><title><![CDATA[Reply to konstruktor on Mon, 04 Jan 2010 11:24:47 GMT]]></title><description><![CDATA[<p>freakC++ schrieb:</p>
<blockquote>
<p>Standartwerte</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>In der Regel initialisiert der default-ctor alle Klassenelemente (wenn es denn nötig ist). Parallel dazu gibt es den copy-ctor (den man selber überladen und implementieren kann/muss). Außerdem solltest du dir Initialisierungslisten anschauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1832050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1832050</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 04 Jan 2010 11:24:47 GMT</pubDate></item><item><title><![CDATA[Reply to konstruktor on Mon, 04 Jan 2010 11:26:53 GMT]]></title><description><![CDATA[<p>Das meinte ich mit Standartwerten. andi01 fährt bespielsweise standartgmäß einen BMW <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1832053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1832053</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Mon, 04 Jan 2010 11:26:53 GMT</pubDate></item><item><title><![CDATA[Reply to konstruktor on Mon, 04 Jan 2010 11:28:37 GMT]]></title><description><![CDATA[<p>Nein, ich wollte klar machen, das du Standar<strong>d</strong> mit <strong>t</strong> geschrieben hast <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1832055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1832055</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 04 Jan 2010 11:28:37 GMT</pubDate></item><item><title><![CDATA[Reply to konstruktor on Mon, 04 Jan 2010 11:47:18 GMT]]></title><description><![CDATA[<p>achso, ja das mach ich gerne, aber eigentlich zensiert das Forum das...wahrscheinlich hier nicht, weil es ein zusammengesetztes Wort ist.</p>
<p>lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1832061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1832061</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Mon, 04 Jan 2010 11:47:18 GMT</pubDate></item><item><title><![CDATA[Reply to konstruktor on Mon, 04 Jan 2010 12:23:22 GMT]]></title><description><![CDATA[<p>Der Konstruktor einer Klasse wird aufgerufen, wenn ein neues Objekt dieser Klasse erzeugt werden soll.<br />
Wenn der ctor betreten wird, existiert das Objekt schon im Speicher. Der Konstruktor dient lediglich dazu, das Objekt in einen definierten Zustand zu bringen, dass der Erzeuger damit bedenkenlos weiterarbeiten kann.<br />
Wenn zur Erzeugung Parameter notwendig sind, können die dem Konstruktor mitgegeben werden (wie bei jeder anderen Methode auch).<br />
Außerdem kann er über die Initalisierungsliste erste Zuweisungen ausführen, bevor der Konstruktor betreten wird bzw. können darin die Konstruktoren der Basisklasse(n) aufgerufen werden. Notwendig ist er bei const-Membern, da diese ja nicht mehr geändert werden können, sobald das Objekt erzeugt wurde. Sie müssen ihren Wert also in der Initalisierungsliste zugewiesen bekommen</p>
<p>Der ctor ist neben dem dtor die einzige &quot;Methode&quot; einer Klasse, die keinen Rückgabewert haben darf. Außerdem heißen sie (zumindest in C++) genauso wie der Klassenname</p>
<p>Das dürfte es grob gewesen sein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1832091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1832091</guid><dc:creator><![CDATA[zwutz]]></dc:creator><pubDate>Mon, 04 Jan 2010 12:23:22 GMT</pubDate></item><item><title><![CDATA[Reply to konstruktor on Mon, 04 Jan 2010 13:28:24 GMT]]></title><description><![CDATA[<p>Die Antworten sind mir ein wenig zu unpräzise. Ein Konstruktor erstellt keine Objekte und ein Destruktor zerstört auch keine. Ein Konstruktor initialisiert Klassen und ein Destruktor räumt auf.</p>
<p>Wenn ich eine Klasse erstelle, dann wird immer ein Konstruktor aufgerufen, in dem ich die Möglichkeit habe, die Klasse zu initialisieren. Wird eine Klasse zerstört, dann wird der Destruktor aufgerufen, wo ich eben Aufräumarbeiten durchführen kann.</p>
<p>Klassen werden entweder auf dem Stack oder auf dem Heap angelegt. Lege ich Objekte auf den Stack, werden die Objekte automatisch beim Verlassen des Gültigkeitsbeireiches gelöscht. Das brauche ich nicht explizit zu machen und kann es damit auch nicht vergessen. Dabei wird auch der Destruktor aufgerufen.</p>
<p>Auf dem Heap lege ich Objekte mit new an. Diese muss ich mit delete wieder explizit löschen. new reserviert Speicher für das Objekt und ruft dann einen Konstruktor auf. delete ruft erst den Destruktor der Klasse auf und gibt den Speicher wieder frei. Da ich solche Objekte explizit löschen muss, kann es schon mal passieren, dass das vergessen wird. Dann hat mein Programm einen Memory-Leak.</p>
<p>Die Aussgabe, dass der dtor die einzige Methode einer Klasse sei, die keinen Rückgabewert haben darf stimmt nicht ganz. Auch der Konstruktor hat keinen Rückgabewert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1832134</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1832134</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Mon, 04 Jan 2010 13:28:24 GMT</pubDate></item><item><title><![CDATA[Reply to konstruktor on Mon, 04 Jan 2010 13:39:05 GMT]]></title><description><![CDATA[<p>Und was mache ich da falsch?</p>
<pre><code class="language-cpp">CWare::CWare()
{
	char Bezeichnung[MaxBez] = Bez1;
	char Strichcode[MaxCode] = Code1;
	Preis = 123;
}
</code></pre>
<p>Er meckert bei der char Zuordnung rum</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1832142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1832142</guid><dc:creator><![CDATA[kryptos]]></dc:creator><pubDate>Mon, 04 Jan 2010 13:39:05 GMT</pubDate></item><item><title><![CDATA[Reply to konstruktor on Mon, 04 Jan 2010 14:03:47 GMT]]></title><description><![CDATA[<p>char-Zeichenketten können so nicht kopiert werden. Was sind den Bez1 und Code1? Auch char-Zeichenketten? Wenn ja, siehe strcpy oder strncpy.</p>
<p>Edit: C-Strings verwendet man auch gar nicht mehr. <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="😉"
    /> In C++ gibt es die Klasse string, die ist deutlich praktischer. Wirf mal einen Blick drauf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1832153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1832153</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 04 Jan 2010 14:03:47 GMT</pubDate></item><item><title><![CDATA[Reply to konstruktor on Mon, 04 Jan 2010 14:37:07 GMT]]></title><description><![CDATA[<p>tntnet schrieb:</p>
<blockquote>
<p>Ein Konstruktor erstellt keine Objekte und ein Destruktor zerstört auch keine. Ein Konstruktor initialisiert Klassen und ein Destruktor räumt auf.</p>
</blockquote>
<p>so in etwa hab ich es doch geschrieben (oder zumindest gemeint. Kann leicht sein, dass es anders rüberkommt)</p>
<p>tntnet schrieb:</p>
<blockquote>
<p>Die Aussgabe, dass der dtor die einzige Methode einer Klasse sei, die keinen Rückgabewert haben darf stimmt nicht ganz. Auch der Konstruktor hat keinen Rückgabewert.</p>
</blockquote>
<p>da du dich mit dieser Aussage wohl ebenfalls auf meine beziehst: genau das hab ich geschrieben. Und diesesmal bin ich mir sogar sicher, dass man sie nicht falsch verstehen konnte <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/1832183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1832183</guid><dc:creator><![CDATA[zwutz]]></dc:creator><pubDate>Mon, 04 Jan 2010 14:37:07 GMT</pubDate></item><item><title><![CDATA[Reply to konstruktor on Mon, 04 Jan 2010 15:20:41 GMT]]></title><description><![CDATA[<blockquote>
<p>Die Aussgabe, dass der dtor die einzige Methode einer Klasse sei, die keinen Rückgabewert haben darf stimmt nicht ganz. Auch der Konstruktor hat keinen Rückgabewert.</p>
</blockquote>
<p>Und was ist mit Methoden, die void &quot;zurueckgeben&quot; ...</p>
<blockquote>
<p>Wenn der ctor betreten wird, existiert das Objekt schon im Speicher.</p>
</blockquote>
<p>Nein, erst nachdem der Konstruktor verlassen wird. Ein Haufen von Nullen und Einsen ist kein Objekt. Ein Konstruktor macht wesentlich mehr als Member mit Standardwerten zu initialisieren. Es ist richtig, dass Speicher von der Groesse des Objektes bereitsteht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1832220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1832220</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Mon, 04 Jan 2010 15:20:41 GMT</pubDate></item><item><title><![CDATA[Reply to konstruktor on Mon, 04 Jan 2010 16:27:44 GMT]]></title><description><![CDATA[<p>tntnet schrieb:</p>
<blockquote>
<p>Klassen werden entweder auf dem Stack oder auf dem Heap angelegt. Lege ich Objekte auf den Stack, werden die Objekte automatisch beim Verlassen des Gültigkeitsbeireiches gelöscht. Das brauche ich nicht explizit zu machen und kann es damit auch nicht vergessen. Dabei wird auch der Destruktor aufgerufen.</p>
</blockquote>
<p>Wenn du schon exakt bist, dann solltest du aber auch Begriffe, wie Stack und Heap vermeiden und eher von automatischen (automatic) und dynamischen (dynamic) Speicher reden. Denn ob jetzt etwas wirklich auf dem Stack oder Heap angelegt wird kann dem Programmierer völlig egal sein. Ihn interessiert nur das unterschiedliche Verhalten.</p>
<p>knivil schrieb:</p>
<blockquote>
<p>Nein, erst nachdem der Konstruktor verlassen wird.</p>
</blockquote>
<p>Exakt. Und das kann auch beobachtet werden, wenn eine Exception aus dem ctor fliegt. Dann wird der Destruktor NICHT aufgerufen, was oftmals noch wichtig zu wissen ist.<br />
Wollts nur als Ergänzung anfügen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1832280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1832280</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 04 Jan 2010 16:27:44 GMT</pubDate></item><item><title><![CDATA[Reply to konstruktor on Mon, 04 Jan 2010 17:34:31 GMT]]></title><description><![CDATA[<p>tntnet schrieb:</p>
<blockquote>
<p>Die Antworten sind mir ein wenig zu unpräzise. Ein Konstruktor erstellt keine Objekte und ein Destruktor zerstört auch keine. Ein Konstruktor initialisiert Klassen und ein Destruktor räumt auf.</p>
<p>Wenn ich eine Klasse erstelle, dann wird immer ein Konstruktor aufgerufen, in dem ich die Möglichkeit habe, die Klasse zu initialisieren. Wird eine Klasse zerstört, dann wird der Destruktor aufgerufen, wo ich eben Aufräumarbeiten durchführen kann.</p>
</blockquote>
<p>Ich hingegen halte <em>das</em> nicht nur für unpräzise, sondern für falsch. Die Klasse ist nur der Typ, gewissenmassen also die Vorlage für ein Objekt bzw. eine Instanz. Du kannst zur Laufzeit weder Klassen initialisieren noch aufräumen. Genauer gesagt existieren die Klassen an sich nach der Kompilierzeit gar nicht mehr, schon gar nicht in einer Flexibilität, die solche Operationen zuliesse (zumindest in C++). Das sind <em>Objekte</em>.</p>
<p>Dass ein Konstruktor Objekte erstellt und ein Destruktor sie zerstört, hat schon seine Richtigkeit.</p>
<p>tntnet schrieb:</p>
<blockquote>
<p>Klassen werden entweder auf dem Stack oder auf dem Heap angelegt. Lege ich Objekte auf den Stack, werden die Objekte automatisch beim Verlassen des Gültigkeitsbeireiches gelöscht. Das brauche ich nicht explizit zu machen und kann es damit auch nicht vergessen. Dabei wird auch der Destruktor aufgerufen.</p>
</blockquote>
<p>Genauso wenig kannst du Klassen auf den Stack oder Heap (besser Freestore) legen, das sind wiederum <em>Objekte</em>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1832349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1832349</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 04 Jan 2010 17:34:31 GMT</pubDate></item></channel></rss>