<?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[Was bewirkt dieser Code?]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>Wisst ihr was dieser Code bewirkt:</p>
<pre><code class="language-cpp">Tier Hase[5];

Hase[0]=Tier(1,&quot;Max&quot;);
</code></pre>
<p>Bei Tier Hase[5] werden ja 5 Objekte erzeugt, bei denen der Standardkonstruktor aufegerufen wird?<br />
Was passiert dann aber bei der Zeile</p>
<pre><code class="language-cpp">Hase[0]=Tier(1,&quot;Max&quot;);
</code></pre>
<p>Danke!</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/278735/was-bewirkt-dieser-code</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 02:15:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/278735.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 12 Dec 2010 10:39:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Was bewirkt dieser Code? on Sun, 12 Dec 2010 10:39:15 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>Wisst ihr was dieser Code bewirkt:</p>
<pre><code class="language-cpp">Tier Hase[5];

Hase[0]=Tier(1,&quot;Max&quot;);
</code></pre>
<p>Bei Tier Hase[5] werden ja 5 Objekte erzeugt, bei denen der Standardkonstruktor aufegerufen wird?<br />
Was passiert dann aber bei der Zeile</p>
<pre><code class="language-cpp">Hase[0]=Tier(1,&quot;Max&quot;);
</code></pre>
<p>Danke!</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1993191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1993191</guid><dc:creator><![CDATA[Mike1986]]></dc:creator><pubDate>Sun, 12 Dec 2010 10:39:15 GMT</pubDate></item><item><title><![CDATA[Reply to Was bewirkt dieser Code? on Sun, 12 Dec 2010 10:41:40 GMT]]></title><description><![CDATA[<p>Da wird der <code>operator=</code> aufgerufen (bei dir wahrscheinlich vom Compiler generiert), der alle Eigenschaften von <code>Tier(1, &quot;Max&quot;)</code> in <code>Hase[0]</code> kopiert.<br />
Was herauskommt ist eigentlich logisch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1993193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1993193</guid><dc:creator><![CDATA[kurzundknapp]]></dc:creator><pubDate>Sun, 12 Dec 2010 10:41:40 GMT</pubDate></item><item><title><![CDATA[Reply to Was bewirkt dieser Code? on Sun, 12 Dec 2010 10:42:24 GMT]]></title><description><![CDATA[<p>Es wird ein temporäres Tier Objekt erzeugt (mit den Werten 1, &quot;Max&quot;), dann wird dieses Objekt in das Hase Array an die Stelle mit Index 0 kopiert.</p>
<p>Usw.</p>
<p>Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1993195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1993195</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Sun, 12 Dec 2010 10:42:24 GMT</pubDate></item><item><title><![CDATA[Reply to Was bewirkt dieser Code? on Sun, 12 Dec 2010 11:20:15 GMT]]></title><description><![CDATA[<p>Danke!</p>
<p>Ich habe jetzt folgendes in einer Klasse Pferd gemacht:</p>
<pre><code class="language-cpp">Pferd() : name(&quot; &quot;), identnr(999){}

 Pferd(string n, int id): name(n), identnr(id) {}
</code></pre>
<p>In der main:</p>
<pre><code class="language-cpp">Pferd pferde[5];

 pferde[0] = Pferd(&quot;Sepp&quot;,0);
</code></pre>
<p>Also bei Pferd pferde[5] wird der Standardkonstruktor aufgerufen.<br />
Bei pferde[0] = Pferd(&quot;Sepp&quot;,0) wird Konstruktor mit Initialisierungsliste aufgerufen?</p>
<p>Das klappt auch alles.</p>
<p>Nur wenn ich z.B. den Namen ausgeben lassen möchte, dann erscheint nichts <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
<p>Wenn ich anstatt</p>
<pre><code class="language-cpp">pferde[0] = Pferd(&quot;Sepp&quot;,0);
</code></pre>
<p>einfach</p>
<pre><code class="language-cpp">pferde[0].setAttribute(&quot;Sepp&quot;,0)
</code></pre>
<p>aufrufen würde und dann den Namen ausgeben möchte, klappt das schon.</p>
<p>Wisst ihr, woran das liegen kann?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1993219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1993219</guid><dc:creator><![CDATA[Mike1986]]></dc:creator><pubDate>Sun, 12 Dec 2010 11:20:15 GMT</pubDate></item><item><title><![CDATA[Reply to Was bewirkt dieser Code? on Sun, 12 Dec 2010 11:33:32 GMT]]></title><description><![CDATA[<p>Die Codeschnipsel von dir sind soweit richtig.<br />
Interessant wäre nun, wie deine Ausgabe so aussieht. Vielleicht ist da ein Fehler vorhanden.<br />
Ich schlage vor, du postest ein abgespecktes kompilierbares Beispiel, bei dem der Fehler erkenntlich ist <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/1993226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1993226</guid><dc:creator><![CDATA[BasicMan01]]></dc:creator><pubDate>Sun, 12 Dec 2010 11:33:32 GMT</pubDate></item><item><title><![CDATA[Reply to Was bewirkt dieser Code? on Sun, 12 Dec 2010 12:36:34 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>hier der Code:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;

using namespace std;

class Elefant 
{
  //Deklaration der Attribute
  private:
  string name; //für den Namen
  int identnr; //für die Identifizierung
  int reservierung[10];

  public:
  //der Konstruktor mit Initialisierungsliste
  //hier werden Defaultwerte gesetzt
  Elefant() : name(&quot; &quot;), identnr(999) {

                 for(int i = 0; i &lt; 10; i++) {

                  reservierung[i] = 999;

                  } 

          cout &lt;&lt;&quot;NAME: &quot; &lt;&lt;name &lt;&lt;endl;
          cout &lt;&lt;&quot;IDENTNR: &quot; &lt;&lt;identnr &lt;&lt;endl;

          }    

 Elefant(string n, int id): name(n), identnr(id) {}

 string getName() {

 return name;       
}

int getident() {

    return identnr;
}

int getReservierung() {

    return reservierung[9];
}

};

int main(int argc, char *argv[])
{

    Elefant fanti[5];

    fanti[0] = Elefant (&quot;Max&quot;,11);
    cout &lt;&lt;endl &lt;&lt; endl;
    cout &lt;&lt; &quot;NAME NEU: &quot; &lt;&lt; fanti[0].getName() &lt;&lt;endl;
    cout &lt;&lt; &quot;IDENT NEU: &quot; &lt;&lt; fanti[0].getident() &lt;&lt;endl;

    //HIER STIMMT ES NICHT
    cout &lt;&lt; &quot;HIER SOLLTE 999 stehen: &quot; &lt;&lt; fanti[0].getReservierung();

    system(&quot;PAUSE&quot;);
    return EXIT_SUCCESS;
}
</code></pre>
<p>Ich glaube der Fehler liegt daran, dass ich die Reservierung nicht neu gesetzt habe?<br />
Warum muss ich eigentlich die Reservierung neu setzen, sie wurde ja bereits im Standardkonstruktor neu gesetzt?</p>
<p>Ist das mit der Reservierung und der for SChleife im Konstruktor korrekt oder eher schlechter Stil?</p>
<p>Danke&quot;!</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1993256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1993256</guid><dc:creator><![CDATA[Mike1986]]></dc:creator><pubDate>Sun, 12 Dec 2010 12:36:34 GMT</pubDate></item><item><title><![CDATA[Reply to Was bewirkt dieser Code? on Sun, 12 Dec 2010 12:44:12 GMT]]></title><description><![CDATA[<p>Mike1986 schrieb:</p>
<blockquote>
<p>Warum muss ich eigentlich die Reservierung neu setzen, sie wurde ja bereits im Standardkonstruktor neu gesetzt?</p>
</blockquote>
<p>Aber du konstruierst ein neues Objekt <code>Elefant (&quot;Max&quot;,11)</code> und benutzt dabei einen Konstruktor, der die Reservierung nicht setzt. Und dann kopierst du dieses neue Objekt mit der uninitialisierten Reservierung über das alte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1993267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1993267</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 12 Dec 2010 12:44:12 GMT</pubDate></item><item><title><![CDATA[Reply to Was bewirkt dieser Code? on Sun, 12 Dec 2010 12:48:08 GMT]]></title><description><![CDATA[<p>Also hier erstmal meine Ausgabe zu deinem Programm</p>
<pre><code class="language-cpp">NAME:
IDENTNR: 999
NAME:
IDENTNR: 999
NAME:
IDENTNR: 999
NAME:
IDENTNR: 999
NAME:
IDENTNR: 999

NAME NEU: Max     // &lt; funkst bei mir also
IDENT NEU: 11
HIER SOLLTE 999 stehen: 1990298837
</code></pre>
<p>Zu deiner Reservierung. Es ist durchaus korrekt, deine Variablen im Konstruktor mit Werten vorzufüllen. Du solltest aber bedenken, das du dies bei deinem 2. Konstuktor NICHT tust. Somit ist der Wert in reservierung natürlich uninitialisiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1993269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1993269</guid><dc:creator><![CDATA[BasicMan01]]></dc:creator><pubDate>Sun, 12 Dec 2010 12:48:08 GMT</pubDate></item><item><title><![CDATA[Reply to Was bewirkt dieser Code? on Sun, 12 Dec 2010 12:49:10 GMT]]></title><description><![CDATA[<p>Danke für die Antwort!</p>
<p>Also läuft das so ab:</p>
<p>1. Array fanti[5] erzeugen =&gt; Standardkonstruktor wird aufgerufen<br />
2. neues Objekt erstelen =&gt; fanti[0] = Elefant (&quot;Max&quot;,11); ==&gt; der andere<br />
Konstruktor wird aufgerufen<br />
3. das neue Objekt wird dann in fanti[0] kopiert?</p>
<p>Ist das dann vergleichbar wie in Java:</p>
<p>Elefant fanti[5]</p>
<p>fanti [0] = new Elefant(&quot;Max&quot;,11)??</p>
<p>Danke!</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1993271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1993271</guid><dc:creator><![CDATA[Mike1986]]></dc:creator><pubDate>Sun, 12 Dec 2010 12:49:10 GMT</pubDate></item><item><title><![CDATA[Reply to Was bewirkt dieser Code? on Sun, 12 Dec 2010 13:05:03 GMT]]></title><description><![CDATA[<p>Mike1986 schrieb:</p>
<blockquote>
<p>Ist das dann vergleichbar wie in Java:</p>
</blockquote>
<p>Nein, bei Java hast du zunächst ein Array von Nullzeigern. Anschliessend lässt du den einen Zeiger auf ein neues Objekt verweisen. Bei C++ hingegen hantierst du hier direkt mit Objekten.</p>
<p>Wichtig ist der Unterschied Wertsemantik &lt;-&gt; Referenzsemantik.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1993279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1993279</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 12 Dec 2010 13:05:03 GMT</pubDate></item><item><title><![CDATA[Reply to Was bewirkt dieser Code? on Sun, 12 Dec 2010 13:05:31 GMT]]></title><description><![CDATA[<p>BasicMan01 schrieb:</p>
<blockquote>
<p>Es ist durchaus korrekt, deine Variablen im Konstruktor mit Werten vorzufüllen.</p>
</blockquote>
<p>Die Werte sollten aber nicht Magic Numbers sein (999 ist für mich eine gültige Reservierung), sondern ganz klar falsch sein oder irgendwo mit const bennennt werden. Ich hätte hier -1 genommen:</p>
<pre><code class="language-cpp">Elefant(string n, int id): name(n), identnr(id) { std::fill(reservierung, reservierung+10, -1); }
</code></pre>
<p>C++-Code mit Java zu vergleichen ist im Allgemeinen eine schlechte Idee. Wenn du gleiches Verhalten willst, solltest du <code>boost::ptr_vector</code> verwenden. Ansonsten empfehle ich dir, einen <code>std::vector&lt;int&gt;</code> anstatt ein Array zu verwenden.<br />
Also sowas:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;

class elefant {
public:
  elefant() : name(), identnr(999), reservierung(10, -1) { }
  elefant(const std::string&amp; n, int id)
    : name(n), identnr(id), reservierung(10, -1); { }

  const std::string&amp; name()         const { return name;            }
  int                ident()        const { return identnr;         }
  int                reservierung() const { return reservierung[9]; }

private:
  std::string name;
  int identnr;
  std::vector&lt;int&gt; reservierung;
};

int main()
{
  std::vector&lt;elefant&gt; fanti(5);
  fanti[0] = elefant (&quot;Max&quot;, 11);
  std::cout &lt;&lt; &quot;NAME NEU: &quot;  &lt;&lt; fanti[0].name()  &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;IDENT NEU: &quot; &lt;&lt; fanti[0].ident() &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;HIER SOLLTE 999 stehen: &quot; &lt;&lt; fanti[0].reservierung() &lt;&lt; std::endl;
}
</code></pre>
<p>Habs nur im Antwortfenster geschrieben und nicht getestet, vielleicht sind ein paar syntaxfehler drin.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1993280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1993280</guid><dc:creator><![CDATA[berichtigung]]></dc:creator><pubDate>Sun, 12 Dec 2010 13:05:31 GMT</pubDate></item><item><title><![CDATA[Reply to Was bewirkt dieser Code? on Sun, 12 Dec 2010 13:31:11 GMT]]></title><description><![CDATA[<p>Danke für die Hilfe!</p>
<p>Ich habe noch eine Frage:</p>
<p>Das gleiche Thema mit einer anderen Klasse</p>
<pre><code class="language-cpp">Kundschaft[i] = Kunde(gehege1.kundeVornameAnlegen(), gehege1.kundeNachnameAnlegen(), gehege1.kundeTelefonnummerAnlegen(), i);
</code></pre>
<p>in den Methoden &quot;...Anlegen&quot; werden hier die Werte erfasst.</p>
<p>Mein Frage:</p>
<p>Ist es normal, das zuerst die Methode kundeTelefonnumerAnlegen(), dann KundeNachnameAnlegen() und zum Schluss kundeVornameAnlegen() aufgerufen wird?</p>
<p>Danke!</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1993293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1993293</guid><dc:creator><![CDATA[Mike1986]]></dc:creator><pubDate>Sun, 12 Dec 2010 13:31:11 GMT</pubDate></item><item><title><![CDATA[Reply to Was bewirkt dieser Code? on Sun, 12 Dec 2010 13:38:42 GMT]]></title><description><![CDATA[<p>Mike1986 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">Kundschaft[i] = Kunde(gehege1.kundeVornameAnlegen(), gehege1.kundeNachnameAnlegen(), gehege1.kundeTelefonnummerAnlegen(), i);
</code></pre>
<p>in den Methoden &quot;...Anlegen&quot; werden hier die Werte erfasst.</p>
<p>Mein Frage:</p>
<p>Ist es normal, das zuerst die Methode kundeTelefonnumerAnlegen(), dann KundeNachnameAnlegen() und zum Schluss kundeVornameAnlegen() aufgerufen wird?</p>
</blockquote>
<p>Die Auswertungsreihenfolge ist nicht definiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1993294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1993294</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 12 Dec 2010 13:38:42 GMT</pubDate></item><item><title><![CDATA[Reply to Was bewirkt dieser Code? on Sun, 12 Dec 2010 13:57:44 GMT]]></title><description><![CDATA[<p>Mir ist gerade bei einem Array noch was aufgefallen:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;

using namespace std;

class Elefant 
{
  //Deklaration der Attribute
  private:
  string name; //für den Namen
  int identnr; //für die Identifizierung
  int reservierung[10];

  public:
  //der Konstruktor mit Initialisierungsliste
  //hier werden Defaultwerte gesetzt
  Elefant() : name(&quot; &quot;), identnr(999) {

                 for(int i = 0; i &lt; 10; i++) {

                  reservierung[i] = 999;

                  } 

          cout &lt;&lt;&quot;NAME: &quot; &lt;&lt;name &lt;&lt;endl;
          cout &lt;&lt;&quot;IDENTNR: &quot; &lt;&lt;identnr &lt;&lt;endl;

          }    

 Elefant(string n, int id): name(n), identnr(id) {}

 string getName() {

 return name;       
}

int getident() {

    return identnr;
}

int getReservierung() {

    return reservierung[9];
}

};

int main(int argc, char *argv[])
{

    Elefant fanti[3];

  //  fanti[0] = Elefant (&quot;Max&quot;,11);

fanti[0] = Elefant (&quot;BLA&quot;,0);

fanti[1] = Elefant (&quot;BLu&quot;,1);

fanti[2] = Elefant (&quot;BLi&quot;,2);

//wenn man diese Zeile auskommentiert klappt es wieder??
fanti[3] = Elefant (&quot;BLo&quot;,3);

fanti[4] = Elefant (&quot;BLu&quot;,4);

    cout &lt;&lt;endl &lt;&lt; endl;
    cout &lt;&lt; &quot;NAME NEU: &quot; &lt;&lt; fanti[0].getName() &lt;&lt;endl;
    cout &lt;&lt; &quot;IDENT NEU: &quot; &lt;&lt; fanti[0].getident() &lt;&lt;endl;

    //HIER STIMMT ES NICHT
    cout &lt;&lt; &quot;HIER SOLLTE 999 stehen: &quot; &lt;&lt; fanti[0].getReservierung();

    system(&quot;PAUSE&quot;);
    return EXIT_SUCCESS;
}
</code></pre>
<p>Das Programm bricht natürlich ab.</p>
<p>Allerdings läuft es wenn ich fanti[3] ausklammer??<br />
Warum funktioniert das denn?</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1993302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1993302</guid><dc:creator><![CDATA[Mike1986]]></dc:creator><pubDate>Sun, 12 Dec 2010 13:57:44 GMT</pubDate></item><item><title><![CDATA[Reply to Was bewirkt dieser Code? on Sun, 12 Dec 2010 14:00:52 GMT]]></title><description><![CDATA[<p>Kein Wunder, wenn du ein Array von 3 Elefanten hast und auf das 4. bzw. 5. zugreifen willst. Dass das 5. geht, ist nicht weiter erstaunlich, du überschreibst nämlich irgendetwas anderes.<br />
Entweder vergrösserst du dein Array oder du verwendest den von mir empfohlenen Vector.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1993306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1993306</guid><dc:creator><![CDATA[berichtigung]]></dc:creator><pubDate>Sun, 12 Dec 2010 14:00:52 GMT</pubDate></item><item><title><![CDATA[Reply to Was bewirkt dieser Code? on Sun, 12 Dec 2010 14:05:31 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe nur versehentlich 3 eingegen, eigentlich sollte es 5 sein.</p>
<p>Dann habe ich ein bisschen rumgespielt und gemerkt dass es wenn man fanti[3] auskommentiert kein Fehler mehr erscheint?</p>
<p>Ich habe immer gelernt dass dann das Programm abbrechen sollte?</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1993308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1993308</guid><dc:creator><![CDATA[Mike1986]]></dc:creator><pubDate>Sun, 12 Dec 2010 14:05:31 GMT</pubDate></item><item><title><![CDATA[Reply to Was bewirkt dieser Code? on Sun, 12 Dec 2010 14:49:35 GMT]]></title><description><![CDATA[<p>Kannst du bitte Code liefern, der deinem Programm entspricht? Ist nämlich schade, wenn wir hier ins Blaue raten müssen.</p>
<p>Und nein, gar nichts muss abbrechen. Auf ungültige Array-Indizes zuzugreifen resultiert in undefiniertem Verhalten, also kann alles passieren. Anders wäre das, wenn du intelligente Arrays wie <code>std::tr1::array</code> oder <code>boost::array</code> oder in C++0x <code>std::array</code> verwenden würdest, die könnten dir nämlich mit einer Assertion sofort Fehler aufzeigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1993337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1993337</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 12 Dec 2010 14:49:35 GMT</pubDate></item></channel></rss>