<?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[seltsames mit Objekten bei Initialisierung]]></title><description><![CDATA[<p>Da ist etwas was für mich unklar ist:</p>
<p>Wenn ich eine Klasse erstelle mit Default-Konstruktor<br />
und dann in main ein Objekt erstelle und will dem Argument eine Zahl geben oder ohne ist egal, nur leere Klammer lasse ich da weil dann default &quot;0&quot; macht.</p>
<pre><code class="language-cpp">Artikel erstes();
</code></pre>
<p>so weit so gut. aber sobald ich display (eine methode in Klasse) aufrufen will kommt fehler in compiler:</p>
<pre><code>&quot;error C2228: Links von &quot;.Display&quot; muss sich eine Klasse/Struktur/Union befinden.&quot;
</code></pre>
<p>erst wenn ich statt</p>
<pre><code class="language-cpp">Artikel erstes();
</code></pre>
<p>so</p>
<pre><code class="language-cpp">Artikel erstes;
</code></pre>
<p>ohne klammer mache, dann geht es. Oder andersrum wenn ich Klammer dalasse, aber display NICHT aufrufe dann geht es auch. aber nie beides. Ich verstehe diesen Zusammenhang nicht</p>
<pre><code class="language-cpp">class Artikel  {
private:
	int anzahl;
public:
	Artikel(int test = 0){
		++anzahl;
		cout &lt;&lt; &quot;Dies ist der &quot; &lt;&lt; anzahl &lt;&lt; &quot;-te Artikel.&quot; &lt;&lt; endl;
	}
	~Artikel(){
		--anzahl;
		cout &lt;&lt; &quot;Es gibt noch &quot; &lt;&lt; anzahl &lt;&lt; &quot; Artikel.&quot; &lt;&lt; std::endl;
	}
	void Display() {
		cout &lt;&lt; &quot;test display &quot; &lt;&lt; endl;
	}
};

int main(){
  Artikel erstes(); // &lt;-- das hier wegen Klammern

  erstes.Display(); // und das hier!

  cin.get();
}
</code></pre>
<p>war das keine richtige initialisierung?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/165747/seltsames-mit-objekten-bei-initialisierung</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 01:24:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/165747.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 22 Nov 2006 16:34:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to seltsames mit Objekten bei Initialisierung on Wed, 22 Nov 2006 16:34:20 GMT]]></title><description><![CDATA[<p>Da ist etwas was für mich unklar ist:</p>
<p>Wenn ich eine Klasse erstelle mit Default-Konstruktor<br />
und dann in main ein Objekt erstelle und will dem Argument eine Zahl geben oder ohne ist egal, nur leere Klammer lasse ich da weil dann default &quot;0&quot; macht.</p>
<pre><code class="language-cpp">Artikel erstes();
</code></pre>
<p>so weit so gut. aber sobald ich display (eine methode in Klasse) aufrufen will kommt fehler in compiler:</p>
<pre><code>&quot;error C2228: Links von &quot;.Display&quot; muss sich eine Klasse/Struktur/Union befinden.&quot;
</code></pre>
<p>erst wenn ich statt</p>
<pre><code class="language-cpp">Artikel erstes();
</code></pre>
<p>so</p>
<pre><code class="language-cpp">Artikel erstes;
</code></pre>
<p>ohne klammer mache, dann geht es. Oder andersrum wenn ich Klammer dalasse, aber display NICHT aufrufe dann geht es auch. aber nie beides. Ich verstehe diesen Zusammenhang nicht</p>
<pre><code class="language-cpp">class Artikel  {
private:
	int anzahl;
public:
	Artikel(int test = 0){
		++anzahl;
		cout &lt;&lt; &quot;Dies ist der &quot; &lt;&lt; anzahl &lt;&lt; &quot;-te Artikel.&quot; &lt;&lt; endl;
	}
	~Artikel(){
		--anzahl;
		cout &lt;&lt; &quot;Es gibt noch &quot; &lt;&lt; anzahl &lt;&lt; &quot; Artikel.&quot; &lt;&lt; std::endl;
	}
	void Display() {
		cout &lt;&lt; &quot;test display &quot; &lt;&lt; endl;
	}
};

int main(){
  Artikel erstes(); // &lt;-- das hier wegen Klammern

  erstes.Display(); // und das hier!

  cin.get();
}
</code></pre>
<p>war das keine richtige initialisierung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179449</guid><dc:creator><![CDATA[Kopfkratzer]]></dc:creator><pubDate>Wed, 22 Nov 2006 16:34:20 GMT</pubDate></item><item><title><![CDATA[Reply to seltsames mit Objekten bei Initialisierung on Wed, 22 Nov 2006 16:45:14 GMT]]></title><description><![CDATA[<p>Artikel erstes(); &lt;- funktionsdeklaration<br />
Artikel erstes; &lt;- variablendeklaration</p>
<p>ps. siehe forensuche, vielleicht sogar faq</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179457</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179457</guid><dc:creator><![CDATA[Cpt.Tanga]]></dc:creator><pubDate>Wed, 22 Nov 2006 16:45:14 GMT</pubDate></item><item><title><![CDATA[Reply to seltsames mit Objekten bei Initialisierung on Wed, 22 Nov 2006 17:12:17 GMT]]></title><description><![CDATA[<p>find ich komisch. Im Buch seh ich beides vorhanden. Wieso da kein Fehler? muss ich wohl wieder alles auseinandernehmen woran es liegt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179478</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179478</guid><dc:creator><![CDATA[Kopfkratzer]]></dc:creator><pubDate>Wed, 22 Nov 2006 17:12:17 GMT</pubDate></item><item><title><![CDATA[Reply to seltsames mit Objekten bei Initialisierung on Wed, 22 Nov 2006 17:33:20 GMT]]></title><description><![CDATA[<p>hää! ich glaub es liegt nicht an mir sondern visual studio 2005. der hat selber so ein bug. als ich mehrmals wiederrufen gemacht hab kamen so komische □ □ □ □ zeichen in main. als ich nochmal neugeschrieben hab gehts jetzt auf einmal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179493</guid><dc:creator><![CDATA[Kopfkratzer]]></dc:creator><pubDate>Wed, 22 Nov 2006 17:33:20 GMT</pubDate></item><item><title><![CDATA[Reply to seltsames mit Objekten bei Initialisierung on Wed, 22 Nov 2006 17:38:20 GMT]]></title><description><![CDATA[<p>immer noch komisch!</p>
<p>wenn ich in klammern eine zahl reinschreibe dann gehts aber ohne zahl in klammer - gehts nicht. aber klammern weglasse geht es wiederrum. warum? ich hab doch bei definition: &quot;int test = 0&quot; reingeschrieben</p>
<p>ist Artikel erstes(); nochmal was anderes als<br />
Artikel erstes(4); ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179499</guid><dc:creator><![CDATA[Kopfkratzer]]></dc:creator><pubDate>Wed, 22 Nov 2006 17:38:20 GMT</pubDate></item><item><title><![CDATA[Reply to seltsames mit Objekten bei Initialisierung on Wed, 22 Nov 2006 17:44:19 GMT]]></title><description><![CDATA[<p>Artikel erstes(); &lt;- funktionsdeklaration<br />
Artikel erstes; &lt;- variablendeklaration<br />
Artikel erstes(zahl); &lt;- variablendeklaration und definition mit initialisierung</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179502</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179502</guid><dc:creator><![CDATA[Cpt.Tanga]]></dc:creator><pubDate>Wed, 22 Nov 2006 17:44:19 GMT</pubDate></item><item><title><![CDATA[Reply to seltsames mit Objekten bei Initialisierung on Wed, 22 Nov 2006 17:44:20 GMT]]></title><description><![CDATA[<p>Lies noch mal die Antwort von Cpt.Tanga!</p>
<p>Mit leeren Klammern definierst Du eine Funktion namens erstes ohne Parameter, die ein Objekt vom Typ Artikel zurückgibt, und kein Objekt namens erstes. Das ist kein Bug, sondern Standard-C++.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179503</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 22 Nov 2006 17:44:20 GMT</pubDate></item><item><title><![CDATA[Reply to seltsames mit Objekten bei Initialisierung on Wed, 22 Nov 2006 18:09:02 GMT]]></title><description><![CDATA[<p>achsooo ok sorry sorry. jetzt verstehe ich. funktionsdeklaration ist ja was ganz anderes! also sowas wie &quot;int erstes();&quot;. eigentlich müsste es prototyp heissen oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179515</guid><dc:creator><![CDATA[Kopfkratzer]]></dc:creator><pubDate>Wed, 22 Nov 2006 18:09:02 GMT</pubDate></item><item><title><![CDATA[Reply to seltsames mit Objekten bei Initialisierung on Wed, 22 Nov 2006 18:20:32 GMT]]></title><description><![CDATA[<p>Artikel erstes(int i);<br />
Artikel erstes(int i = 0);</p>
<p>und die hier beiden sind wiederrum eine funktionsdeklaration (prototypen) mit argumenten?<br />
also ganz anders als<br />
Artikel erstes(zahl);<br />
?</p>
<p>boah hier kann man was verwirren!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179525</guid><dc:creator><![CDATA[Kopfkratzer]]></dc:creator><pubDate>Wed, 22 Nov 2006 18:20:32 GMT</pubDate></item><item><title><![CDATA[Reply to seltsames mit Objekten bei Initialisierung on Wed, 22 Nov 2006 21:57:59 GMT]]></title><description><![CDATA[<p>Korrekt. Beides <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>
<pre><code class="language-cpp">Artikel erstes(int zahl);
Artikel erstes();
</code></pre>
<p>sind für den Compiler eben Funktionsprototypen. Im ersten Fall leicht erkennbar, da in den Klammern zuerst ein Typ (int) steht. Bei zweiterem ists von der Interpretation des Standards abhängig, und der interpretiert das halt als leere Parameterliste.</p>
<pre><code class="language-cpp">Artikel erstes(zahl);
</code></pre>
<p>ist eine Objektinstanzierung, da zahl ja kein Typ ist. Bei der Instanzierung von temporären Objekten siehts wieder anders aus.</p>
<pre><code class="language-cpp">return Artikel; // falsch, einen Typ kann man nicht zurückgeben
return Artikel(); // ein default-konstruiertes Objekt schon
</code></pre>
<p>Abstrakt gesagt:</p>
<pre><code class="language-cpp">Typ objekt1(Typ); // Funktion mit 1 Parameter
Typ objekt1(Typ objekt2); // Funktion mit 1 Parameter
Typ objekt1(Typ objekt2 = defwert) // Funktion mit 1 Parameter
Typ objekt1(); // Funktion mit 0 Parametern

Typ objekt1; // Default-Instanzierung
Typ objekt1(objekt2); // Instanzierung durch Konstruktor mit 1 Parameter
Typ objekt1(12); // dito
return Typ(); // freistehende Temporary-Instanzierung durch Default-Konstruktor
return Typ(objekt2); // freistehende Temporary-Instanzierung durch Konstruktor mit 1 Parameter
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1179537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179537</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 22 Nov 2006 21:57:59 GMT</pubDate></item><item><title><![CDATA[Reply to seltsames mit Objekten bei Initialisierung on Wed, 22 Nov 2006 18:50:05 GMT]]></title><description><![CDATA[<p>schön geschrieben ^^ <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /><br />
wäre nicht auch das mal einen eintrag in die faq wert? kommt auch ziemlich häufig vor diese frage</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179544</guid><dc:creator><![CDATA[Cpt.Tanga]]></dc:creator><pubDate>Wed, 22 Nov 2006 18:50:05 GMT</pubDate></item><item><title><![CDATA[Reply to seltsames mit Objekten bei Initialisierung on Wed, 22 Nov 2006 19:28:52 GMT]]></title><description><![CDATA[<p>ja ist gut geschrieben. verständlich.</p>
<p>muss ich also auch hier aufpassen? sieht aus wie eine funktion aber anders? aha!</p>
<pre><code class="language-cpp">return Artikel; // falsch, einen Typ kann man nicht zurückgeben
return Artikel(); // ein default-konstruiertes Objekt schon
</code></pre>
<p>was ist wenn ich 2 Konstruktoren habe? das eine default, das andere nicht, also mit Parametern, die kann man nicht returnen?</p>
<p>wobei die frage ist für mich momentan weniger wichtig. nur würd ich alles aufschreiben was ich aufpassen muss</p>
<p>ansonsten vielen dank, habe jetzt mehr überblick</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179560</guid><dc:creator><![CDATA[Kopfkratzer]]></dc:creator><pubDate>Wed, 22 Nov 2006 19:28:52 GMT</pubDate></item><item><title><![CDATA[Reply to seltsames mit Objekten bei Initialisierung on Wed, 22 Nov 2006 20:06:06 GMT]]></title><description><![CDATA[<p>Wenn du einen Konstruktor mit Parameter hast übergibst du diesen einfach das was er erwartet:</p>
<pre><code class="language-cpp">int artikelnummer=1;
return Artikel(artikelnummer);
</code></pre>
<p>Greetz</p>
<p>//Edit: Deutsch überarbeitet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179570</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179570</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Wed, 22 Nov 2006 20:06:06 GMT</pubDate></item><item><title><![CDATA[Reply to seltsames mit Objekten bei Initialisierung on Wed, 22 Nov 2006 20:25:13 GMT]]></title><description><![CDATA[<p>Habs in der Liste mal ergänzt <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/1179589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179589</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 22 Nov 2006 20:25:13 GMT</pubDate></item></channel></rss>