<?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[myClass myclass vs myClass* myclass]]></title><description><![CDATA[<p>Hier Leute ich würde gerne wissen was hier was macht.</p>
<p>Wenn ich das hier schreibe:</p>
<pre><code>myClass* myclass
</code></pre>
<p>und dann meinte wegen im Konstruktor so:</p>
<pre><code>myclass = new myClass;
</code></pre>
<p>Da würde ich ja eine neue Instanz von myClass erstellen. Gut das verstehe ich auch und auch die benutzung + deleten nicht vergessen.</p>
<p>Was macht aber nun das hier:</p>
<pre><code>myClass myclass
</code></pre>
<p>?<br />
Erzeugt das auch eine neue Instanz oder benutzt es die, die schon da ist? Ich hab leider bei google nichts gefunden aber vielleicht könnt ihr mir da helfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/319254/myclass-myclass-vs-myclass-myclass</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Jul 2026 20:13:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/319254.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 12 Aug 2013 12:10:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to myClass myclass vs myClass* myclass on Mon, 12 Aug 2013 12:10:10 GMT]]></title><description><![CDATA[<p>Hier Leute ich würde gerne wissen was hier was macht.</p>
<p>Wenn ich das hier schreibe:</p>
<pre><code>myClass* myclass
</code></pre>
<p>und dann meinte wegen im Konstruktor so:</p>
<pre><code>myclass = new myClass;
</code></pre>
<p>Da würde ich ja eine neue Instanz von myClass erstellen. Gut das verstehe ich auch und auch die benutzung + deleten nicht vergessen.</p>
<p>Was macht aber nun das hier:</p>
<pre><code>myClass myclass
</code></pre>
<p>?<br />
Erzeugt das auch eine neue Instanz oder benutzt es die, die schon da ist? Ich hab leider bei google nichts gefunden aber vielleicht könnt ihr mir da helfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2345214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2345214</guid><dc:creator><![CDATA[Fuchs aus dem Wald]]></dc:creator><pubDate>Mon, 12 Aug 2013 12:10:10 GMT</pubDate></item><item><title><![CDATA[Reply to myClass myclass vs myClass* myclass on Mon, 12 Aug 2013 12:14:02 GMT]]></title><description><![CDATA[<blockquote>
<p>Erzeugt das auch eine neue Instanz oder benutzt es die, die schon da ist?</p>
</blockquote>
<p>Probiere es doch aus, was der Compiler sagt, indem du ein minimales Beispiel compilierst.</p>
<p>PS: Es gibt keine dummen Fragen, nur dumme und faule Menschen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2345215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2345215</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Mon, 12 Aug 2013 12:14:02 GMT</pubDate></item><item><title><![CDATA[Reply to myClass myclass vs myClass* myclass on Mon, 12 Aug 2013 12:15:09 GMT]]></title><description><![CDATA[<p>Ich hoffe, das hier macht ein ein wenig verständlicher:</p>
<pre><code class="language-cpp">MyClass myclass; // Erzeugt eine Instanz auf dem Stack

MyClass* myClassPtr; // Erzeugt einen Pointer auf ein Objekt vom Typ &quot;MyClass&quot; - noch nicht zugewiesen, zeigt also irgenwohin.

myClassPtr = new MyClass; // es wird eine neue Instanz von &quot;MyCLass&quot; auf dem Heap erzeugt. myClassPtr zeigt auf diese Instanz.

myClassPtr = &amp;myclass; // myClassPtr zeigt nun auf die ganz oben erzeugte Instanz
</code></pre>
<p>und der obligatorische Hinweis: &quot;new&quot; bitte nur in Verbindung mit Smart Pointern verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2345216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2345216</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Mon, 12 Aug 2013 12:15:09 GMT</pubDate></item><item><title><![CDATA[Reply to myClass myclass vs myClass* myclass on Mon, 12 Aug 2013 12:16:33 GMT]]></title><description><![CDATA[<p>Es geht vermutlich im das Problem, dass fuer einen Namen mehrere Deklarationen existieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2345217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2345217</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Mon, 12 Aug 2013 12:16:33 GMT</pubDate></item><item><title><![CDATA[Reply to myClass myclass vs myClass* myclass on Mon, 12 Aug 2013 12:17:12 GMT]]></title><description><![CDATA[<p>Beides erzeugt eine neue Instanz, und zwar logisch die gleiche (nicht die sellbe).</p>
<p>Aber:<br />
Das &quot;MyClass myclass;&quot; hat als Speicherklasse den Typ auto. Das heisst, sie wird dort erstellt, wo es steht und beim nächsten passenden schließenden } zerstört.<br />
Du kannst da mal nach Lebensdauer von Objekten oder sowas googlen.<br />
Beispiel:</p>
<pre><code>{
    MyClass myclass;
    // ...
} // &lt;--- hier wird myclass zerstört = Destruktor wird aufgerufen

// hier lebt myclass nicht mehr und alles ist weg davon
</code></pre>
<p>Dein</p>
<pre><code>{
    MyClass * myclass = new MyClass;
    // ...
}
// hier lebt das Objekt hinter myclass noch, aber myclass selbst ist tot
</code></pre>
<p>erzeugt auch eine neue Instanz, jedoch wird diese nicht gelöscht wenn der Gültigkeitsbereich abgelaufen ist. Das heist nach der schließenden geschweiften Klammer lebt das Objekt noch, nichts ist gelöscht, aber die Variable mit der du darauf zugreifst ist weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2345218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2345218</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 12 Aug 2013 12:17:12 GMT</pubDate></item><item><title><![CDATA[Reply to myClass myclass vs myClass* myclass on Mon, 12 Aug 2013 12:20:04 GMT]]></title><description><![CDATA[<p>daddy_felix schrieb:</p>
<blockquote>
<pre><code class="language-cpp">MyClass myclass; // Erzeugt eine Instanz auf dem Stack - wissen wir nicht, kommt darauf an, wo diese Deklaration steht

MyClass* myClassPtr; // Erzeugt einen Pointer auf ein Objekt vom Typ &quot;MyClass&quot; - noch nicht zugewiesen, zeigt also irgenwohin - ditto
</code></pre>
</blockquote>
<p>Der gezeigte Code ist eben nicht minimal sondern unzureichend, weshalb knivil und ich auch genervt sind. FudW ist lange genug hier, um richtiges Fragestellen gelernt zu haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2345221</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2345221</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 12 Aug 2013 12:20:04 GMT</pubDate></item><item><title><![CDATA[Reply to myClass myclass vs myClass* myclass on Mon, 12 Aug 2013 12:35:03 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Der gezeigte Code ist eben nicht minimal sondern unzureichend, weshalb knivil und ich auch genervt sind. FudW ist lange genug hier, um richtiges Fragestellen gelernt zu haben.</p>
</blockquote>
<p>Der reichte schon aus. Genau das was Skym0sh0 und daddy_felix gesagt haben wollte ich wissen. Vielen dank dafür.</p>
<p>daddy_felix schrieb:</p>
<blockquote>
<p>und der obligatorische Hinweis: &quot;new&quot; bitte nur in Verbindung mit Smart Pointern verwenden.</p>
</blockquote>
<p>Was mach ich da schon wieder falsch. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> Ich glaube nicht das ich ein Smart Pointer benutze. Ich glaube wenn ich das hier sage bin ich direkt tot. xD</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2345222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2345222</guid><dc:creator><![CDATA[Fuchs aus dem Wald]]></dc:creator><pubDate>Mon, 12 Aug 2013 12:35:03 GMT</pubDate></item><item><title><![CDATA[Reply to myClass myclass vs myClass* myclass on Mon, 12 Aug 2013 12:38:49 GMT]]></title><description><![CDATA[<p>Ein Smart-Pointer kapselt Resourcen und sichert sie mit RAII ab. Dadurch wird abgesichert, dass die Resource auch wirklich freigegeben wird, egal was passiert (Exceptions o.ä.).</p>
<p>Rohe Zeiger auf einen mit <code>new</code> alloziertes Objekt zeigen zu lassen ist recht gefährlich und daher in modernem C++ unüblich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2345223</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2345223</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Mon, 12 Aug 2013 12:38:49 GMT</pubDate></item><item><title><![CDATA[Reply to myClass myclass vs myClass* myclass on Mon, 12 Aug 2013 12:40:52 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Ein Smart-Pointer kapselt Resourcen und sichert sie mit RAII ab. Dadurch wird abgesichert, dass die Resource auch wirklich freigegeben wird, egal was passiert (Exceptions o.ä.).</p>
<p>Rohe Zeiger auf einen mit <code>new</code> alloziertes Objekt zeigen zu lassen ist recht gefährlich und daher in modernem C++ unüblich.</p>
</blockquote>
<p>Oh man. Ok schau ich mir mal an. Danke wieder etwas was ich extra lernen muss. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2345224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2345224</guid><dc:creator><![CDATA[Fuchs aus dem Wald]]></dc:creator><pubDate>Mon, 12 Aug 2013 12:40:52 GMT</pubDate></item><item><title><![CDATA[Reply to myClass myclass vs myClass* myclass on Mon, 12 Aug 2013 12:46:50 GMT]]></title><description><![CDATA[<p>Fuchs aus dem Wald schrieb:</p>
<blockquote>
<p>Danke wieder etwas was ich extra lernen muss. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>falsche Einstellung. Freu dich, dass du dir dadurch keine Gedanken mehr über die richtige Verwendung von delete machen musst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2345225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2345225</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Mon, 12 Aug 2013 12:46:50 GMT</pubDate></item><item><title><![CDATA[Reply to myClass myclass vs myClass* myclass on Mon, 12 Aug 2013 12:52:04 GMT]]></title><description><![CDATA[<p>Fuchs aus dem Wald schrieb:</p>
<blockquote>
<p>Was mach ich da schon wieder falsch. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> Ich glaube nicht das ich ein Smart Pointer benutze. Ich glaube wenn ich das hier sage bin ich direkt tot. xD</p>
</blockquote>
<p>Nein falsch. Wenn du sie nicht benutzt, dann gibts Flames zum Frühstück <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>Das Ding ist einfach, wenn du ein Objekt per new erzeugst, dann bist du auch dafür verantwortlich, dass das Objekt erstens zerstört wird und zweitens, dass der Speicher des Objekts wieder freigegeben wird. Machst du das nicht, sondern erzeugst munter neue Objekte ist früher oder später dein Speicher ganz voll -&gt; nicht gut.</p>
<p>Und stell dir dann mal folgenden Code vor:</p>
<pre><code>int foo(int x)
{
	double * d = new double[1000*x + 14*x*x]; // viel Speicher, denn wollen wir wieder haben

	while ( rand() )
	{
		std::string s = &quot;djksgksdg&quot;; // '

		if ( s[5] == ' ' )
			return 0; // *

		double arg = d[0] * 0.1;
		for(int i = 0; i &lt; x; ++i)
		{
			d[i] = rand() / 247.0;
			if ( d[i] == 3.141592 )
				return 3; // *
		}

		if ( s.size() &lt; 10 )
			return s.size(); // *
	}

	return 100; // *
}
</code></pre>
<p>Macht total unsinnigen und unlogischen Müll. Aber er erzeugt ein Array per new. Folglich müssen wir dafür sorgen, dass das auch gelöscht wird per delete[]. Und zwar wo? Genau an jeder Stelle wo ein Stern als Kommentar steht:</p>
<pre><code>int foo(int x)
{
	double * d = new double[1000*x + 14*x*x]; // viel Speicher, denn wollen wir wieder haben

	while ( rand() )
	{
		std::string s = &quot;djksgksdg&quot;; // '

		if ( s[5] == ' ' )
		{
			delete[] d;
			return 0;
		}

		double arg = d[0] * 0.1;
		for(int i = 0; i &lt; x; ++i)
		{
			d[i] = rand() / 247.0;
			if ( d[i] == 3.141592 )
			{
				delete[] d;
				return 3;
			}
		}

		if ( s.size() &lt; 10 )
		{
			delete[] d;
			return s.size();
		}
	}

	delete[] d;
	return 100; // *
}
</code></pre>
<p>Schon recht unübersichtlich, nicht wahr? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Aber das reicht nicht. Was passiert denn wenn irgendwo noch eine Exception fliegt? (In dem Code durch den ' im Kommentar angegeben)</p>
<p>Tja, die müssten wir dann fangen, verarbeiten und auch den Speicher freigeben. In dem Codeschnipsel ist das noch simpel, da das nur an ein oder 2 Stellen passieren kann (da ich nur Grunddatentypen verwendet habe).</p>
<p>Aber wie sieht das in richtigem Code aus, der etwas größer und komplexer ist?</p>
<p>Richtig, da benutzen wir modernes C++ und haben statt dem dynamsichen Array einen std::vector&lt;double&gt;. Oder einen std::unique_ptr oder einen std::shared_ptr oder oder.</p>
<p>DAs sind automatische Zeiger, die den Speicher, auf den sie zeigen, automatisch löschen, wenn sie zerstört werden <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/2345226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2345226</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 12 Aug 2013 12:52:04 GMT</pubDate></item><item><title><![CDATA[Reply to myClass myclass vs myClass* myclass on Mon, 12 Aug 2013 13:07:54 GMT]]></title><description><![CDATA[<p>daddy_felix schrieb:</p>
<blockquote>
<p>falsche Einstellung. Freu dich, dass du dir dadurch keine Gedanken mehr über die richtige Verwendung von delete machen musst.</p>
</blockquote>
<p>Muss ich ja leider doch! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>[<br />
Nein falsch. Wenn du sie nicht benutzt, dann gibts Flames zum Frühstück <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>Ja von euch wenn nicht. Wenn ich die benutze gibt es hier flames. <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>Danke für diene weitere Ausführung! Sehr hilfreich!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2345228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2345228</guid><dc:creator><![CDATA[Fuchs aus dem Wald]]></dc:creator><pubDate>Mon, 12 Aug 2013 13:07:54 GMT</pubDate></item><item><title><![CDATA[Reply to myClass myclass vs myClass* myclass on Mon, 12 Aug 2013 13:30:12 GMT]]></title><description><![CDATA[<p>Fuchs aus dem Wald schrieb:</p>
<blockquote>
<p>daddy_felix schrieb:</p>
<blockquote>
<p>falsche Einstellung. Freu dich, dass du dir dadurch keine Gedanken mehr über die richtige Verwendung von delete machen musst.</p>
</blockquote>
<p>Muss ich ja leider doch! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>Aber nur ein einziges Mal im Leben und danach nie wieder, da du den einmal geschriebenen Smartpointer immer wieder benutzen kannst. Und da sich jemand anderes diese Gedanken bereits gemacht hat, brauchst du das sogar nicht einmal ein einziges Mal im Leben zu machen<sup>*</sup>, sondern kannst gleich die fertigen Smartpointer benutzen. Die haben dann auch an solch nicht direkt offensichtliche Dinge gedacht, wie eine Spezialisierung für Arrays.</p>
<p><sup>*</sup>Es ist aber natürlich trotzdem gut, einmal darüber nachzudenken und zu verstehen, wie die Smartpointer funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2345231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2345231</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 12 Aug 2013 13:30:12 GMT</pubDate></item><item><title><![CDATA[Reply to myClass myclass vs myClass* myclass on Tue, 13 Aug 2013 07:19:36 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Aber nur ein einziges Mal im Leben und danach nie wieder, da du den einmal geschriebenen Smartpointer immer wieder benutzen kannst. Und da sich jemand anderes diese Gedanken bereits gemacht hat, brauchst du das sogar nicht einmal ein einziges Mal im Leben zu machen<sup>*</sup>, sondern kannst gleich die fertigen Smartpointer benutzen. Die haben dann auch an solch nicht direkt offensichtliche Dinge gedacht, wie eine Spezialisierung für Arrays.</p>
<p><sup>*</sup>Es ist aber natürlich trotzdem gut, einmal darüber nachzudenken und zu verstehen, wie die Smartpointer funktionieren.</p>
</blockquote>
<p>Jo ich schau mir die jedenfalls an. Noch knapp 100 Seiten dann werden die auch in meinem Buch behandelt. (Der C++ Programmierer)</p>
<p>P.S.:<br />
Wenn wundert das... Ich hab da jemanden im Forum gefunden. Kommt euch der kram bekannt vor?<br />
<a href="http://www.c-plusplus.net/forum/314084-20" rel="nofollow">http://www.c-plusplus.net/forum/314084-20</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2345427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2345427</guid><dc:creator><![CDATA[Fuchs aus dem Wald]]></dc:creator><pubDate>Tue, 13 Aug 2013 07:19:36 GMT</pubDate></item></channel></rss>