<?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[Elementinitialisierer]]></title><description><![CDATA[<p>Hallo, ich versuche jetzt Elementinitialisierer zu verstehen.</p>
<p>Ich lese: Einer der Gründe weshalb man Elementinitialisierer einsetzt:</p>
<p>- Klassen, für die kein Default-Konstruktor definiert ist, können nicht als Typ für Teilobjekte verwendet werden.</p>
<p>Ich versuche dieses Problem nachzuproduzieren. Damit ich den Unterschied sehe.<br />
Aber es geht so oder so nicht.</p>
<pre><code>class DefKon { 
public:
	int var;
	DefKon() {} // Defaul-Konstruktor
};

class Test {
private:
	int var;
	int var2;

public:

	Test(int t = 666, int u = 1337, [b]DefKon w[/b]) : [b]w.var = 3[/b]{ 
		var = t; 
		var2 = u;
		//cout &lt;&lt; w.var &lt;&lt; endl;
	}

	int Get(){
		return var;
	}
	int Get2(){
		return var2;
	}

};
</code></pre>
<p>oder kann jemand ein besseres Beispiel geben?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/183360/elementinitialisierer</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 09:33:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/183360.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 04 Jun 2007 11:08:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Elementinitialisierer on Mon, 04 Jun 2007 11:08:33 GMT]]></title><description><![CDATA[<p>Hallo, ich versuche jetzt Elementinitialisierer zu verstehen.</p>
<p>Ich lese: Einer der Gründe weshalb man Elementinitialisierer einsetzt:</p>
<p>- Klassen, für die kein Default-Konstruktor definiert ist, können nicht als Typ für Teilobjekte verwendet werden.</p>
<p>Ich versuche dieses Problem nachzuproduzieren. Damit ich den Unterschied sehe.<br />
Aber es geht so oder so nicht.</p>
<pre><code>class DefKon { 
public:
	int var;
	DefKon() {} // Defaul-Konstruktor
};

class Test {
private:
	int var;
	int var2;

public:

	Test(int t = 666, int u = 1337, [b]DefKon w[/b]) : [b]w.var = 3[/b]{ 
		var = t; 
		var2 = u;
		//cout &lt;&lt; w.var &lt;&lt; endl;
	}

	int Get(){
		return var;
	}
	int Get2(){
		return var2;
	}

};
</code></pre>
<p>oder kann jemand ein besseres Beispiel geben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298349</guid><dc:creator><![CDATA[C++-Lehrling]]></dc:creator><pubDate>Mon, 04 Jun 2007 11:08:33 GMT</pubDate></item><item><title><![CDATA[Reply to Elementinitialisierer on Mon, 04 Jun 2007 11:39:06 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class DefKon 
{
public:
    DefKon() : var(0) {} // Defaul-Konstruktor

public:
    std::size_t var;
};

class Test 
{
private:
    unsigned int var;
    unsigned int var2;

public:

    Test (const unsigned int t = 666, const unsigned int u = 1337, const DefKon&amp; w) : var(t), var2(u)
    {
        w.var = 10;
        std::cout &lt;&lt; w.var &lt;&lt; std::endl;
    }

    unsigned int get_var() const { return var; }
    unsigned int get_var2() const { return var2; }
};
</code></pre>
<p>const-correctnes usw <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/1298387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298387</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 04 Jun 2007 11:39:06 GMT</pubDate></item><item><title><![CDATA[Reply to Elementinitialisierer on Mon, 04 Jun 2007 11:40:20 GMT]]></title><description><![CDATA[<p>&quot;w&quot; ist kein member von Klasse Test. Soviel ich weis kann man nur menber initalisieren ....</p>
<pre><code class="language-cpp">Test(int t = 666, int u = 1337, DefKon w) : var(t), var2(u){ 

   w.var =3;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1298391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298391</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 04 Jun 2007 11:40:20 GMT</pubDate></item><item><title><![CDATA[Reply to Elementinitialisierer on Mon, 04 Jun 2007 12:10:22 GMT]]></title><description><![CDATA[<p>hmmm verwirrend aber ich nur dieses überlfüssiges zuweisen entdeckt:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

class TestVar { 
public:
	int var;
	TestVar(int a = 565) {
		var = a; cout &lt;&lt; var &lt;&lt; endl;
	} 
};

class Test {
private:
	int var;
	int var2;
	TestVar var3;

public:

	Test(int t, int u, TestVar w) : var(t), var2(u), var3(w){
		var = t; 
		var2 = u;
		var3 = w;
		//cout &lt;&lt; w.var &lt;&lt; endl;
	}

	int Get(){
		return var;
	}
	int Get2(){
		return var2;
	}

};

int main()
{
	Test haha(1,2,3);
    cin.get();
}
</code></pre>
<p>ausgabe: 3</p>
<p>wenn ich hier initialisierer</p>
<pre><code class="language-cpp">, var3(w)
</code></pre>
<p>wegmache kommt in der ausgabe:</p>
<blockquote>
<p>3<br />
565 &lt;-- das hier ist überflüssiges zuweisen oder?</p>
</blockquote>
<p>aber bei mir geht es noch darum ab wann ein fehler entsteht wenn kein initialisierer da ist wegen dem Satz &quot;- Klassen, für die kein Default-Konstruktor definiert ist, können nicht als Typ für Teilobjekte verwendet werden. &quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298435</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298435</guid><dc:creator><![CDATA[C++-Lehrling]]></dc:creator><pubDate>Mon, 04 Jun 2007 12:10:22 GMT</pubDate></item><item><title><![CDATA[Reply to Elementinitialisierer on Mon, 04 Jun 2007 12:14:21 GMT]]></title><description><![CDATA[<p>Dann probier mal das hier</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class TestVar {
public:
    int var;
    TestVar(int a) //ohne default-Wert 
    {
        var = a; cout &lt;&lt; var &lt;&lt; endl;
    }
};

class Test {
private:
    int var;
    int var2;
    TestVar var3;

public:

    Test(int t, int u, TestVar w) : var(t), var2(u) //ohne Initialisierung von var3
    {
        var = t;
        var2 = u;
        var3 = w;
        //cout &lt;&lt; w.var &lt;&lt; endl;
    }

    int Get(){
        return var;
    }
    int Get2(){
        return var2;
    }

};

int main()
{
    Test haha(1,2,3);
    cin.get();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1298441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298441</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 04 Jun 2007 12:14:21 GMT</pubDate></item><item><title><![CDATA[Reply to Elementinitialisierer on Mon, 04 Jun 2007 12:21:57 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p>const-correctnes usw <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>
</blockquote>
<p>okay ich schreib nochmal die 3 Gründe ab:</p>
<blockquote>
<p>- Ein Teilobjekt wird zunächst mit Default-Werten versehen. Erst anschließend enthält es durch Zuweisungen die richtigen Werte. Diese teilweise überflüssigen Aktionen beeinträchtigen die Performance des Programms.</p>
<p>- Konstante Objekte oder Referenzen können nicht als Teilobjekte deklariert werden, da eine nachträgliche Zuweisung nicht möglich ist.</p>
<p>- Klassen, für die kein Default-Konstruktor definiert ist, können nicht als Typ für Teilobjekte verwendet werden.</p>
</blockquote>
<p>Das 1. hab ich so eben entdeckt.</p>
<p>Das 2. hast du diesen Beispiel gezeigt richtig?</p>
<p>Das 3. da brauch ich noch ein Beispiel dafür!!!! Wie reproduziere ich das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298452</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298452</guid><dc:creator><![CDATA[C++-Lehrling]]></dc:creator><pubDate>Mon, 04 Jun 2007 12:21:57 GMT</pubDate></item><item><title><![CDATA[Reply to Elementinitialisierer on Mon, 04 Jun 2007 12:23:42 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Dann probier mal das hier</p>
</blockquote>
<p>aaah okay!! vielen vielen dank! dann hab ich alles!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298455</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298455</guid><dc:creator><![CDATA[C++-Lehrling]]></dc:creator><pubDate>Mon, 04 Jun 2007 12:23:42 GMT</pubDate></item><item><title><![CDATA[Reply to Elementinitialisierer on Mon, 04 Jun 2007 12:26:59 GMT]]></title><description><![CDATA[<p>C++-Lehrling schrieb:</p>
<blockquote>
<p>...</p>
<blockquote>
<p>...<br />
- Klassen, für die kein Default-Konstruktor definiert ist, können nicht als Typ für Teilobjekte verwendet werden.</p>
</blockquote>
<p>...<br />
Das 3. da brauch ich noch ein Beispiel dafür!!!! Wie reproduziere ich das?</p>
</blockquote>
<p>EDIT: eigentlich zu spät, aber noch ein anderer Weg für &quot;Teilobjekt&quot;:</p>
<pre><code class="language-cpp">class A {
   int x;
public:
   A(int i) : x(i) {}
}; // bietet keinen Default-Ctor

class B : public A {
};

int main(void) {
   B b; // Krach-die-Wurst !!
   return 0;
}
</code></pre>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298457</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298457</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 04 Jun 2007 12:26:59 GMT</pubDate></item><item><title><![CDATA[Reply to Elementinitialisierer on Mon, 04 Jun 2007 13:05:16 GMT]]></title><description><![CDATA[<p>auch nochmal danke. Die Beispiele kopier ich alles</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298498</guid><dc:creator><![CDATA[C++-Lehrling]]></dc:creator><pubDate>Mon, 04 Jun 2007 13:05:16 GMT</pubDate></item><item><title><![CDATA[Reply to Elementinitialisierer on Wed, 06 Jun 2007 19:07:46 GMT]]></title><description><![CDATA[<p>letzte Frage noch: Elementinitialisierer funktioniert nur bei Konstruktoren richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1300308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1300308</guid><dc:creator><![CDATA[C++-Lehrling]]></dc:creator><pubDate>Wed, 06 Jun 2007 19:07:46 GMT</pubDate></item><item><title><![CDATA[Reply to Elementinitialisierer on Wed, 06 Jun 2007 21:55:04 GMT]]></title><description><![CDATA[<p>C++-Lehrling schrieb:</p>
<blockquote>
<p>letzte Frage noch: Elementinitialisierer funktioniert nur bei Konstruktoren richtig?</p>
</blockquote>
<p>Jo, es gibt sie nur da <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/1300391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1300391</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Wed, 06 Jun 2007 21:55:04 GMT</pubDate></item><item><title><![CDATA[Reply to Elementinitialisierer on Thu, 07 Jun 2007 07:53:56 GMT]]></title><description><![CDATA[<p>Wenn man den Copykonstruktor mit dazu zählt. <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1300516</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1300516</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 07 Jun 2007 07:53:56 GMT</pubDate></item></channel></rss>