<?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[2. Konstruktor für Get- und Set-Elemente]]></title><description><![CDATA[<p>Hallo<br />
Ich bin fleissig am C++ üben und mir ist wieder mal eine Frage aufgetaucht.<br />
Im meinem Programmierbuch ist die Rede von einem zweiten Konstruktor, falls ich Get- und Set-Elemente in meinem Programm benutze.<br />
Der normale Konstruktor sieht ja folgendermassen aus(Bsp. mit x und y):</p>
<pre><code class="language-cpp">Zahlen()          //Name der Klasse
{
  x = 0;
  y = 0;
}
</code></pre>
<p>Aber jetzt steht in dem Buch das Beispiel zu einem zweiten Konstruktor(der zum Einsatz kommt, fall ich Get- bzw. Set-Elemente benutze):</p>
<pre><code class="language-cpp">Zahlen(double x_wert, double y_wert)
{
  x = x_wert;
  y = y_wert;
}
</code></pre>
<p>Laut meinen bisherigen Erkentnissen kann man einen Konstruktor doch nur ohne Argumente aufrufen!?<br />
und ich will ja nich jedesmal dem Konstruktor Argumente mitteilen(da könnte ich die Variablen ja gleich von Hand definieren)...<br />
Wenn ihr versucht dass mir zu erklären, dann bitte probieren so einfach wie möglich zu schreiben.<br />
EDIT:<br />
Thx für die Antworten</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/169760/2-konstruktor-für-get-und-set-elemente</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 19:45:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/169760.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 08 Jan 2007 16:37:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 2. Konstruktor für Get- und Set-Elemente on Mon, 08 Jan 2007 21:18:34 GMT]]></title><description><![CDATA[<p>Hallo<br />
Ich bin fleissig am C++ üben und mir ist wieder mal eine Frage aufgetaucht.<br />
Im meinem Programmierbuch ist die Rede von einem zweiten Konstruktor, falls ich Get- und Set-Elemente in meinem Programm benutze.<br />
Der normale Konstruktor sieht ja folgendermassen aus(Bsp. mit x und y):</p>
<pre><code class="language-cpp">Zahlen()          //Name der Klasse
{
  x = 0;
  y = 0;
}
</code></pre>
<p>Aber jetzt steht in dem Buch das Beispiel zu einem zweiten Konstruktor(der zum Einsatz kommt, fall ich Get- bzw. Set-Elemente benutze):</p>
<pre><code class="language-cpp">Zahlen(double x_wert, double y_wert)
{
  x = x_wert;
  y = y_wert;
}
</code></pre>
<p>Laut meinen bisherigen Erkentnissen kann man einen Konstruktor doch nur ohne Argumente aufrufen!?<br />
und ich will ja nich jedesmal dem Konstruktor Argumente mitteilen(da könnte ich die Variablen ja gleich von Hand definieren)...<br />
Wenn ihr versucht dass mir zu erklären, dann bitte probieren so einfach wie möglich zu schreiben.<br />
EDIT:<br />
Thx für die Antworten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1205814</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1205814</guid><dc:creator><![CDATA[Gamer4]]></dc:creator><pubDate>Mon, 08 Jan 2007 21:18:34 GMT</pubDate></item><item><title><![CDATA[Reply to 2. Konstruktor für Get- und Set-Elemente on Mon, 08 Jan 2007 16:55:18 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Wenn deine Klasse beide Konstruktoren hat kannst du sowohl als auch aufrufen:</p>
<pre><code class="language-cpp">Zahlen xyz; // ruft den standard c'tor auf
Zahlen xyz( 10.0, 20.0 ); // ruft den überladenen c'tor auf
</code></pre>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1205840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1205840</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Mon, 08 Jan 2007 16:55:18 GMT</pubDate></item><item><title><![CDATA[Reply to 2. Konstruktor für Get- und Set-Elemente on Mon, 08 Jan 2007 17:21:07 GMT]]></title><description><![CDATA[<p>du kannst mehrere Konstruktoren gleichzeitig definieren.</p>
<p>Sieh dir zum Beispiel mal das an:</p>
<pre><code class="language-cpp">class CInteger {
public:
    CInteger(void);                    // Das ist der Standard-Konstruktor
    CInteger(int iNumber);             // Hier wird dem Konstruktor noch ein Wert zur Initialisierung mit auf den Weg gegeben
    CInteger(const CInteger&amp; iOther);  // Und das ist ein Kopierkonstruktor. Den brauchst du, wenn du den Zuweisungsoperator (=) überlädst.
    virtual ~CInteger(void); // Und das ist jetzt der Destruktor. Das virtual kannst du auch weglassen, aber wenn du mal mit Vererbung und so anfängst, kommt es gut, wenn du schon vorher virtual verwendet hat.
    CInteger&amp; operator= (const CInteger&amp; iOther); // Hier wird der Zuweisungsoperator überladen
    CInteger&amp; operator= (int iOther); // und hier nochmal, damit man auch normale ints verwenden kann.
    operator int (void) const; // Dieser Operator wird intern aufgerufen, wenn man im Programm schreibt (int)Variable. Es ist also ein Casting-Operator.
protected:
    int m_iValue; // Und in dieser Membervariable wird der Wert gespeichert.
};
</code></pre>
<p>Jetzt schau dir noch die Implementation an:</p>
<pre><code class="language-cpp">CInteger::CInteger(void) {
    m_iValue = 0; // Hier bekommt m_iValue als Standard den Wert 0
}

CInteger::CInteger(int iNumber) {
    m_iValue = iNumber; // Hier bekommt m_iValue den Wert iNumber
}

CInteger::CInteger(const CInteger&amp; iOther) {
    m_iValue = iOther.m_iValue; // Hier übernimmt m_iValue den Wert eines anderen Objekts vom Typ CInteger
}

CInteger::~CInteger(void) {
    // Hier brauchen wir nichts zu machen, da wir keinen Speicher dynamisch reserviert haben.
}

CInteger&amp; CInteger::operator= (const CInteger&amp; iOther) {
    // Hier passiert folgendes:
    // CInteger var1, var2;
    // var1 = var2;
    // Intern sieht das aber so aus:
    // var1.operator=(var2);
    m_iValue = iOther.m_iValue;
    return *this;
}

CInteger&amp; CInteger::operator= (int iOther) {
    // Hier passiert fast das selbe wie oben:
    // CInteger var1;
    // int var2;
    // var1 = var2;
    // Intern sieht das wieder so aus:
    // var1.operator=(var2);
    m_iValue = iOther;
    return *this;
}

CInteger::operator int (void) const {
    return m_iValue;
}
</code></pre>
<p>Jetzt schau dir noch an, wie man das nutzt:</p>
<pre><code class="language-cpp">int main(int argc, char** argv) {
    CInteger var1; // Hier wird CInteger::CInteger(void); aufgerufen.
    CInteger var2(256); // Hier wird CInteger::CInteger(int iNumber); aufgerufen.
    CInteger var3(var1); // Hier wird CInteger::CInteger(const CInteger&amp; iOther); aufgerufen.
    var1 = 256; // Hier wird CInteger&amp; CInteger::operator= (int iOther); aufgerufen
    var1 = var2; // Hier wird CInteger&amp; CInteger::operator= (const CInteger&amp; iOther); aufgerufen.
    int var4;
    var4 = (int)var1; // Hier wird CInteger::operator int (void) const; aufgerufen.
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1205865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1205865</guid><dc:creator><![CDATA[DrakoXP]]></dc:creator><pubDate>Mon, 08 Jan 2007 17:21:07 GMT</pubDate></item><item><title><![CDATA[Reply to 2. Konstruktor für Get- und Set-Elemente on Mon, 08 Jan 2007 17:21:20 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>und das Verwenden der Initialisierungsliste im Konstruktor ist auch vorteilhaft</p>
<pre><code class="language-cpp">Zahlen(double x_wert, double y_wert) 
  : x(x_wert), y(y_wert)
{
}
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1205866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1205866</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 08 Jan 2007 17:21:20 GMT</pubDate></item></channel></rss>