<?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[Verständnisproblem mit Array]]></title><description><![CDATA[<p>hallo,<br />
ich frage mich folgendes:</p>
<p>wenn ich ein array erstelle mit z.B. (class testclasse) testklasse *test = new Testklasse[100];</p>
<p>es handelt sich dabei ja um ein array von pointern auf eine speicherstelle vom typ testklasse.</p>
<p>wenn ich nun dieses array vergrössern will, dann erstelle ich ein neues array mit z.b. testklasse *test2 = new Testklasse[120] und kopiere in einer schleife ala test2[0] = test[0];</p>
<p>da es sich hier aber eigentlich nur um pointer handelt, müsste es doch probleme geben, wenn ich delete [] test; verwende. lösche ich damit nicht auch die test2 inhalte ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/168926/verständnisproblem-mit-array</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 15:05:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/168926.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 29 Dec 2006 17:49:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verständnisproblem mit Array on Fri, 29 Dec 2006 17:49:40 GMT]]></title><description><![CDATA[<p>hallo,<br />
ich frage mich folgendes:</p>
<p>wenn ich ein array erstelle mit z.B. (class testclasse) testklasse *test = new Testklasse[100];</p>
<p>es handelt sich dabei ja um ein array von pointern auf eine speicherstelle vom typ testklasse.</p>
<p>wenn ich nun dieses array vergrössern will, dann erstelle ich ein neues array mit z.b. testklasse *test2 = new Testklasse[120] und kopiere in einer schleife ala test2[0] = test[0];</p>
<p>da es sich hier aber eigentlich nur um pointer handelt, müsste es doch probleme geben, wenn ich delete [] test; verwende. lösche ich damit nicht auch die test2 inhalte ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1199588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199588</guid><dc:creator><![CDATA[KartoffelBube]]></dc:creator><pubDate>Fri, 29 Dec 2006 17:49:40 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem mit Array on Fri, 29 Dec 2006 18:02:14 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>da du ja dir neuen Speicher für test2 besorgst und dann mit test2[0] = test[0] alle Werte in diesen neuen Speicher <strong>kopierst</strong>, passiert beim delete test nichts <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>
<p>Edit::SyntaxKorrekt();</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1199589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199589</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 29 Dec 2006 18:02:14 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem mit Array on Fri, 29 Dec 2006 18:01:07 GMT]]></title><description><![CDATA[<p>Dein Verständnidproblem fängt ganz vorn an. <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>
<pre><code class="language-cpp">testklasse *test = new testklasse[100];
</code></pre>
<p>test zeigt auf das erste Element eines arrays von 100 Elementen<br />
vom Type testklasse. Nochmal, dieses array enthält keine Pointer<br />
sondern Elemente das gewünschten Typs. Das Ergbnis von new liefert<br />
allerdings einen Zeiger, und zwar auf das erste Element des arrays.</p>
<p>Damit dürfte sich der Rest deiner Fragen hoffentlich erledigt haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1199590</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199590</guid><dc:creator><![CDATA[Redhead]]></dc:creator><pubDate>Fri, 29 Dec 2006 18:01:07 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem mit Array on Sat, 30 Dec 2006 08:42:40 GMT]]></title><description><![CDATA[<p>hmm,<br />
dann dürfte man aber nicht mit = arbeiten dürfen.<br />
wenn ich hier mit = kopieren würde, würde ja eine kopie des objektes angefertgt werden.<br />
in einem anderen threads habe ich aber gelesen, dass man nicht so ohne weiteres eine kopie eines objektes anlegen kann.<br />
wie kriege ich denn nun die daten des ersten arrays schnell ins zweite array, wenn = nicht geht ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1199772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199772</guid><dc:creator><![CDATA[KartoffelBube]]></dc:creator><pubDate>Sat, 30 Dec 2006 08:42:40 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem mit Array on Sat, 30 Dec 2006 08:45:25 GMT]]></title><description><![CDATA[<p>Hier, ich habe den beitrag mal rausgesucht:</p>
<blockquote>
<p>sagt mal, wenn ich ein umfangreiches objekt (mit new erzeugt) habe, welches über einen ganzen haufen dynamischer arrays, zeigern und co hat.</p>
<p>wie stelle ichs am besten an, dass ich eine exakte kopie (auch mit new erzeugt) davon erhalte - sprich ein unabhängiges neues objekt ?</p>
<p>muss ich von hand alles rüberkopieren oder geht es auch einfacher ?</p>
<p>000000000000000000000000000000000000000000000</p>
<p>Phoemuex<br />
Mitglied</p>
<p>Benutzerprofil<br />
Anmeldungsdatum: 06.10.2004<br />
Beiträge: 210</p>
<p>Beitrag Phoemuex Mitglied 17:23:56 22.12.2006 Titel: Re: Kopie vom Objekt wie am besten ? Zitieren<br />
bblb schrieb:<br />
muss ich von hand alles rüberkopieren</p>
<p>Ja, schreib dir am Besten dazu einen eigenen Copy-Konstruktor/Zuweisungsoperator.</p>
<p>Felix Rudolf...</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1199773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199773</guid><dc:creator><![CDATA[KartoffelBube]]></dc:creator><pubDate>Sat, 30 Dec 2006 08:45:25 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem mit Array on Sat, 30 Dec 2006 09:12:05 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>KartoffelBube schrieb:</p>
<blockquote>
<p>wenn ich hier mit = kopieren würde, würde ja eine kopie des objektes angefertgt werden.</p>
</blockquote>
<p>Und genau das ist _kein_ Problem, sofern der Zuweisungsoperator der Klasse korrekt arbeitet. Merke: Eine (korrekte) Kopie eines Objektes b von einem anderen Objekt a führt dazu, dass b völlig unabhängig von a ist. =&gt; Wenn a zerstört wird, ist b davon gänzlich unberührt. Andersherum gilt dies natürlich auch.<br />
Wie bereits RedHead erwähnt hat: Du arbeitest in der Schleife mit den Objekten der Klasse und nicht mit Zeigern darauf. D.h. es wird wenn du</p>
<pre><code class="language-cpp">T foo, bar;
...
foo = bar;
</code></pre>
<p>schreibst, der Zuweisungsoperator der Klasse T aufgerufen und nicht die Adresse von bar in foo gespeichert.<br />
Dies ist bei folgendem Code der Fall:</p>
<pre><code class="language-cpp">T foo, bar;
T *p_foo = &amp;foo, *p_bar = &amp;bar;
p_foo = p_bar; // p_foo zeigt nun auf bar und nicht mehr auf foo.
</code></pre>
<p>Hier wird _nicht_ der Zuweisungsoperator von T aufgerufen.</p>
<blockquote>
<p>in einem anderen threads habe ich aber gelesen, dass man nicht so ohne weiteres eine kopie eines objektes anlegen kann.</p>
</blockquote>
<p>Das ist genau dann richtig, wenn dieses Objekt selbst mit dynamischem Speicher hantiert. Dann musst du dich selbst um eine Korrekte Kopier- und Zuweisungs-Semantik kümmern.</p>
<blockquote>
<p>wie kriege ich denn nun die daten des ersten arrays schnell ins zweite array, wenn = nicht geht ?</p>
</blockquote>
<p>Verwendet deine Klasse dynamischen Speicher? Wenn ja: kümmere dich um korrektes Kopieren und Zuweisen (schreibe eigenen copy-ctor und op=).<br />
Ansonsten musst du dir keine Gedanken um den von dir beanstandeten Code machen <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>
<p>Gruß, Caipi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1199776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199776</guid><dc:creator><![CDATA[Caipi]]></dc:creator><pubDate>Sat, 30 Dec 2006 09:12:05 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem mit Array on Sat, 30 Dec 2006 11:11:51 GMT]]></title><description><![CDATA[<p>ja, die klasse verfügt über eine verkettete liste.<br />
in dem fall, reicht es doch, wenn ich den zeiger im neuen objet übernehme und den im alten objekt vorm löschen auf null setze. oder muss aich auch hier die komplette liste neu erstellen ? ich denke nicht - oder ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1199805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199805</guid><dc:creator><![CDATA[KartoffelBube]]></dc:creator><pubDate>Sat, 30 Dec 2006 11:11:51 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem mit Array on Sat, 30 Dec 2006 14:21:42 GMT]]></title><description><![CDATA[<p>Bei der Zuweisung von 2 Klassenobjekten, wenn die klasse selbst keinen Copy-Konstruktor hat, macht der compiler einen memcpy daraus.</p>
<p>Das funktioniert solange gut, solange die klasse keine dynamischen Elemente enthält.</p>
<p>Sobald dynamische Elemente enthalten sind, muss ein Copy-Konstruktor implementiert werden. Ansonsten gibt es ein crash, wenn man beide objekte löschen möchte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1199880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199880</guid><dc:creator><![CDATA[ss]]></dc:creator><pubDate>Sat, 30 Dec 2006 14:21:42 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem mit Array on Sun, 31 Dec 2006 10:58:17 GMT]]></title><description><![CDATA[<p>OK - habs verstanden und auch eingebaut.</p>
<p>aber eine frage. der Zuweisungsoperator.</p>
<p>wie wird der bei virtuellen klassen eingebaut. ganz normal mit virtual ? oder muss ich da etwas beachten ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1200223</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1200223</guid><dc:creator><![CDATA[KartoffelBube]]></dc:creator><pubDate>Sun, 31 Dec 2006 10:58:17 GMT</pubDate></item></channel></rss>