<?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[std::string als Stackobjekt in Klasse - problemlos?]]></title><description><![CDATA[<p>Hallo...<br />
Ist folgender Fall unproblematisch (in Bezug auf Memoryleak usw.)?</p>
<pre><code class="language-cpp">class CTest
{
public:
	CTest(void) // ist die void-Angabe eigentlich Standardkonform?
	{
		this-&gt;m_strText = &quot;standard&quot;; // gibt es eine andere Möglichkeit, das zu setzen, außer im Konstruktor?
	}

	~CTest(void)
	{
		// muss ich hier was aufräumen?
	}

	std::string receive(void)
	{
		return this-&gt;m_strText; // hier entsteht eine Kopie auf dem Stack, also kein Memoryleak oder?
	}

	void change(std::string strNew)
	{
		this-&gt;m_strText = strNew;
	}

private:
	std::string m_strText;
};

void test()
{
	CTest *pTest = new CTest;
	pTest-&gt;change(&quot;omg&quot;);
	std::string strTest = pTest-&gt;receive(); // Kopie auf Stack, richtig?
	strTest = &quot;bla&quot;; // nur diese Kopie, also nicht der String in der Klasseninstanz selbst, wird verändern, richtig?
	delete pTest;
}
</code></pre>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/264030/std-string-als-stackobjekt-in-klasse-problemlos</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 21:12:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/264030.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 31 Mar 2010 15:51:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::string als Stackobjekt in Klasse - problemlos? on Wed, 31 Mar 2010 16:17:38 GMT]]></title><description><![CDATA[<p>Hallo...<br />
Ist folgender Fall unproblematisch (in Bezug auf Memoryleak usw.)?</p>
<pre><code class="language-cpp">class CTest
{
public:
	CTest(void) // ist die void-Angabe eigentlich Standardkonform?
	{
		this-&gt;m_strText = &quot;standard&quot;; // gibt es eine andere Möglichkeit, das zu setzen, außer im Konstruktor?
	}

	~CTest(void)
	{
		// muss ich hier was aufräumen?
	}

	std::string receive(void)
	{
		return this-&gt;m_strText; // hier entsteht eine Kopie auf dem Stack, also kein Memoryleak oder?
	}

	void change(std::string strNew)
	{
		this-&gt;m_strText = strNew;
	}

private:
	std::string m_strText;
};

void test()
{
	CTest *pTest = new CTest;
	pTest-&gt;change(&quot;omg&quot;);
	std::string strTest = pTest-&gt;receive(); // Kopie auf Stack, richtig?
	strTest = &quot;bla&quot;; // nur diese Kopie, also nicht der String in der Klasseninstanz selbst, wird verändern, richtig?
	delete pTest;
}
</code></pre>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1876044</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1876044</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Wed, 31 Mar 2010 16:17:38 GMT</pubDate></item><item><title><![CDATA[Reply to std::string als Stackobjekt in Klasse - problemlos? on Wed, 31 Mar 2010 16:14:58 GMT]]></title><description><![CDATA[<p>Ich sehe nicht, wo m_strText definiert wird. Falls es ein std::string ist: Da muss man nichts aufräumen. Das ist ja gerade der Sinn von std::string, dass man sich um so etwas nicht kümmern braucht.</p>
<p>Was die Frage nach der Initialisierung angeht: Guck dir mal an, was eine Initialisierungsliste ist.</p>
<p>Die anderen beiden Fragen:<br />
Ja, strTest ist eine Kopie des Strings aus der Klasse. Die Aussage, dass diese auf dem Stack liegt ist mit Vorsicht zu genießen. Die Verwaltungsdaten des Strings liegen auf dem Stack, die Daten irgendwo auf dem Heap. Wenn du aber std::strings einander mit = zuweist, dann werden auch die Daten kopiert, es ist also alles so wie man es erwartet und deine Änderung von strTest in der nächsten Zeile hat keine Auswirkung auf m_strText.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1876052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1876052</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 31 Mar 2010 16:14:58 GMT</pubDate></item><item><title><![CDATA[Reply to std::string als Stackobjekt in Klasse - problemlos? on Wed, 31 Mar 2010 16:17:08 GMT]]></title><description><![CDATA[<p>Hi. Das ist ja sehr... komfortabel <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Natürlich sollte m_strText ein std::string sein. Habe ich nur vergessen ^^<br />
Habe es mal hinzugefügt.</p>
<p>Danke!</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1876055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1876055</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Wed, 31 Mar 2010 16:17:08 GMT</pubDate></item><item><title><![CDATA[Reply to std::string als Stackobjekt in Klasse - problemlos? on Wed, 31 Mar 2010 16:23:56 GMT]]></title><description><![CDATA[<p>Noch eine &quot;schnelle&quot; Frage für die sich kein neuer Thread lohnt.<br />
Wenn ich eine Klasseninstanz als nicht-pointer in der Klasse haben will, wird der Konstruktor dann automatisch aufgerufen (auch Dekonstruktor)?<br />
Beispiel:</p>
<pre><code class="language-cpp">class CContainer
{
public:
    CContainer(void)
    {
        cout &lt;&lt; &quot;Container Ctor&quot; &lt;&lt; endl;
    }

    ~CContainer(void)
    {
        cout &lt;&lt; &quot;Container Dtor&quot; &lt;&lt; endl;
    }
}

class CHolder
{
public:
    CHolder(void)
    {
        cout &lt;&lt; &quot;Holder Ctor&quot; &lt;&lt; endl;
    }

    ~CHolder(void)
    {
        cout &lt;&lt; &quot;Holder Dtor&quot; &lt;&lt; endl;
    }

private:
    CContainer m_Container;
}

// ...
int main(int argc, char *argv[])
{
    CHolder *pHolder = new CHolder;
    delete pHolder;
    // ist m_Container von pHolder dann auch gelöscht?
    // wenn ja, müsste die Ausgabe wie folgt sein:
    //   Holder Ctor -&gt; Container Ctor -&gt; Container Dtor -&gt; Holder Dtor
    // stimmt das?

    return 0;
}
</code></pre>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1876057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1876057</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Wed, 31 Mar 2010 16:23:56 GMT</pubDate></item><item><title><![CDATA[Reply to std::string als Stackobjekt in Klasse - problemlos? on Wed, 31 Mar 2010 16:30:35 GMT]]></title><description><![CDATA[<p>Ja.</p>
<p>Jeweils im Konstruktor bzw. Destruktor der Klasse in der das Objekt liegt beim zerstören des Objekts.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1876065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1876065</guid><dc:creator><![CDATA[blub* 0]]></dc:creator><pubDate>Wed, 31 Mar 2010 16:30:35 GMT</pubDate></item><item><title><![CDATA[Reply to std::string als Stackobjekt in Klasse - problemlos? on Wed, 31 Mar 2010 16:30:53 GMT]]></title><description><![CDATA[<p>Ist richtig so.</p>
<p>Faustregel: Pro new ein delete. Pro new[] ein delete[].</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1876066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1876066</guid><dc:creator><![CDATA[Janjan]]></dc:creator><pubDate>Wed, 31 Mar 2010 16:30:53 GMT</pubDate></item><item><title><![CDATA[Reply to std::string als Stackobjekt in Klasse - problemlos? on Wed, 31 Mar 2010 19:24:36 GMT]]></title><description><![CDATA[<p>Janjan schrieb:</p>
<blockquote>
<p>Faustregel: Pro new ein delete. Pro new[] ein delete[].</p>
</blockquote>
<p>Bekannteste Abweichung von der Regel: Smart Pointer.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/20378">@theliquidwave</a></p>
<blockquote>
<p>Dekonstruktor</p>
</blockquote>
<p>Destruktor!</p>
<p>Und hast du denn das Programm nicht getestet?! - Da hättest du gesehen, dass genau diese Reihenfolge ausgegeben wird.. (oder wolltest du nur wissen, ob das so auch definiert ist?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1876149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1876149</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 31 Mar 2010 19:24:36 GMT</pubDate></item><item><title><![CDATA[Reply to std::string als Stackobjekt in Klasse - problemlos? on Thu, 01 Apr 2010 06:29:09 GMT]]></title><description><![CDATA[<p>theliquidwave schrieb:</p>
<blockquote>
<pre><code class="language-cpp">class CTest /*Warum immer C davor? Ungarische Notation ist recht veraltet...*/
{
public:
	CTest(void) // F ist die void-Angabe eigentlich Standardkonform?
                    /* Sie ist erlaubt. Aber unnötig. Eigentlich nur ein
                       C-Relikt, dort wars obligatorisch */
	{
		this-&gt;m_strText = &quot;standard&quot;; // gibt es eine andere Möglichkeit, das zu setzen, außer im Konstruktor?
                /* Jein, da gehört eigentlich in die Initialisierungsliste.
                   Und ja, du kannst den Wert in jeder Methode ändern, da er
                   nicht const ist. 
                   Das ständige this-&gt; vorneweg ist übrigens nicht nötig,
                   seltene Spezialfälle mal ausgenommen.  
                   Das m_ am Variablennamen grenzt wieder an ungarische
                   Notation, ist aber Geschmackssache.*/
	}
	
	~CTest(void)
	{
		// muss ich hier was aufräumen?
                /* nein. Destruktoren von Membern werden automatisch 
                   aufgeräumt, std::string verwaltet seinen Soecher selbst
                   und sorg für dessen Freigabe. */
	}
	
	std::string receive(void)
	{
		return this-&gt;m_strText; // hier entsteht eine Kopie auf dem Stack, also kein Memoryleak oder?
                /* richtig, es wird ein temporäres Objekt erzeugt. */
	}
	
	void change(std::string strNew)
	{
		this-&gt;m_strText = strNew;
                /* zum this-&gt; siehe oben. 
                   strNew ist hier eine lokale Kopie, die nur 
                   einmal gelesen wird für die Zuweisung. Eine 
                   konstante Referenz hätte es hier auch getan. */

	}

private:
	std::string m_strText;
};

void test()
{
	CTest *pTest = new CTest;
	pTest-&gt;change(&quot;omg&quot;);
	std::string strTest = pTest-&gt;receive(); // Kopie auf Stack, richtig?
                         /* Ja... */
	strTest = &quot;bla&quot;; // nur diese Kopie, also nicht der String in der Klasseninstanz selbst, wird verändern, richtig?
                         /* Ja, weils eine Kopie ist, also ein anderes 
                            Objekt und keine Referenz auf das string-Objekt
                            hinter pTest */
	delete pTest;    /* Das new und delete ist unnötig. Du hättest dein
                            CTest-Objekt auch gleich auf dem Stack anlegen
                            können. Hat nur Vorteile in diesem Fall. */
}
</code></pre>
</blockquote>
<p>Du scheinst von irgendeiner anderen Programmiersprache zu stammen, zumindest lassen dein new/delete und die ganzen Fragen nach den automatischen Destruktor-Aufrufen usw. darauf schließen. Ein gutes C++-Buch sollte da Abhilfe schaffen. Das wichtigste dabei: vergiss was du in der anderen Sprache gelernt hast. Solche Dinge lassen sich meist nicht ohne weiteres von einer Sprache auf die andere übertragen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1876239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1876239</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 01 Apr 2010 06:29:09 GMT</pubDate></item><item><title><![CDATA[Reply to std::string als Stackobjekt in Klasse - problemlos? on Thu, 01 Apr 2010 11:35:02 GMT]]></title><description><![CDATA[<p>blub² schrieb:</p>
<blockquote>
<p>Ja.</p>
<p>Jeweils im Konstruktor bzw. Destruktor der Klasse in der das Objekt liegt beim zerstören des Objekts.</p>
</blockquote>
<p>Gut :&gt;</p>
<p>drakon schrieb:</p>
<blockquote>
<p>Destruktor!</p>
</blockquote>
<p>Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>drakon schrieb:</p>
<blockquote>
<p>Und hast du denn das Programm nicht getestet?! - Da hättest du gesehen, dass genau diese Reihenfolge ausgegeben wird.. (oder wolltest du nur wissen, ob das so auch definiert ist?)</p>
</blockquote>
<p>Ich wollte wissen wie es im Standard definiert ist. Ich habe zu viel gesehen um zu glauben, dass es auch im GCC so aussieht wie mit dem MSVC...</p>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Warum immer C davor? Ungarische Notation ist recht veraltet...</p>
</blockquote>
<p>Keine Ahnung... Ich habe es mal in einem Tutorial gesehen, und auch in einigen Sourcecodes. Ich fand es praktisch. Aber stimmt, durch die heutigen IDEs ist es eigentlich nicht mehr nötig.</p>
<p>pumuckl schrieb:</p>
<blockquote>
<p>// F ist die void-Angabe eigentlich Standardkonform?<br />
Sie ist erlaubt. Aber unnötig. Eigentlich nur ein<br />
C-Relikt, dort wars obligatorisch</p>
</blockquote>
<p>Ok, ich habe echt kein Plan wo ich das her hab.</p>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Jein, da gehört eigentlich in die Initialisierungsliste.<br />
Und ja, du kannst den Wert in jeder Methode ändern, da er nicht const ist.</p>
</blockquote>
<p>Gut <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>pumuckl schrieb:</p>
<blockquote>
<p>Das ständige this-&gt; vorneweg ist übrigens nicht nötig,<br />
seltene Spezialfälle mal ausgenommen.<br />
Das m_ am Variablennamen grenzt wieder an ungarische<br />
Notation, ist aber Geschmackssache.</p>
</blockquote>
<p>So finde ich es übersichtlicher. Aber eins von beiden würde sicher reichen.</p>
<p>pumuckl schrieb:</p>
<blockquote>
<p>strNew ist hier eine lokale Kopie, die nur<br />
einmal gelesen wird für die Zuweisung. Eine<br />
konstante Referenz hätte es hier auch getan.</p>
</blockquote>
<p>Also so, und es wäre trotzdem eine Kopie in m_strText?</p>
<pre><code class="language-cpp">void change(const std::string &amp;strNew)
{
    this-&gt;m_strText = strNew;
}
</code></pre>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Das new und delete ist unnötig. Du hättest dein<br />
CTest-Objekt auch gleich auf dem Stack anlegen können. Hat nur Vorteile in diesem Fall.</p>
</blockquote>
<p>Jo, war auch nur ein Beispiel auf mein speziellen Anwendungsfall bezogen. Hätte ich vielleicht dazuschreiben können.</p>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Du scheinst von irgendeiner anderen Programmiersprache zu stammen, zumindest lassen dein new/delete und die ganzen Fragen nach den automatischen Destruktor-Aufrufen usw. darauf schließen.</p>
</blockquote>
<p>Ich komme aus der Welt voller GCs.</p>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Ein gutes C++-Buch sollte da Abhilfe schaffen. Das wichtigste dabei: vergiss was du in der anderen Sprache gelernt hast.</p>
</blockquote>
<p>Guter Tipp - ich schleppe wohl wirklich ein paar &quot;Altlasten&quot; mit mir herum.</p>
<p>Danke an alle!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1876342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1876342</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Thu, 01 Apr 2010 11:35:02 GMT</pubDate></item><item><title><![CDATA[Reply to std::string als Stackobjekt in Klasse - problemlos? on Thu, 01 Apr 2010 18:52:19 GMT]]></title><description><![CDATA[<p>theliquidwave schrieb:</p>
<blockquote>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Ein gutes C++-Buch sollte da Abhilfe schaffen. Das wichtigste dabei: vergiss was du in der anderen Sprache gelernt hast.</p>
</blockquote>
<p>Guter Tipp - ich schleppe wohl wirklich ein paar &quot;Altlasten&quot; mit mir herum.</p>
</blockquote>
<p>In einem solchem Fall ist imo &quot;The C++ programming language&quot; sehr geeignet. Ist ein rechtes Buch, aber wenn du schon Erfahrung hast, dann kannst du da enorm profitieren und erhälst einen guten Einblick, wie alles in C++ läuft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1876564</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1876564</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 01 Apr 2010 18:52:19 GMT</pubDate></item><item><title><![CDATA[Reply to std::string als Stackobjekt in Klasse - problemlos? on Thu, 01 Apr 2010 19:44:28 GMT]]></title><description><![CDATA[<p>Danke. Das werde ich mir mal anschauen <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="🙂"
    /><br />
Eine Frage habe ich aber noch... Es ist nicht möglich, das gleiche wie oben zu machen, wenn die Klasse einen Konstruktor hat, der einen oder mehrere Parameter hat, oder?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1876578</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1876578</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Thu, 01 Apr 2010 19:44:28 GMT</pubDate></item><item><title><![CDATA[Reply to std::string als Stackobjekt in Klasse - problemlos? on Thu, 01 Apr 2010 19:45:51 GMT]]></title><description><![CDATA[<p>Ich verstehe nicht ganz. Was meinst du genau? Beispiel?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1876579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1876579</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 01 Apr 2010 19:45:51 GMT</pubDate></item><item><title><![CDATA[Reply to std::string als Stackobjekt in Klasse - problemlos? on Thu, 01 Apr 2010 19:47:53 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class CBla
{
public:
    CBla(); // dieser wird dann ja wohl aufgerufen
    CBla(std::string strBla);
    CBla(int X);
};

class CHolder
{
private:
    CBla m_Bla; // ist es irgendwie möglich, dass der 2. oder 3. Konstruktor, und nicht der erste aufgerufen wird?
}
</code></pre>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1876580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1876580</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Thu, 01 Apr 2010 19:47:53 GMT</pubDate></item><item><title><![CDATA[Reply to std::string als Stackobjekt in Klasse - problemlos? on Thu, 01 Apr 2010 19:53:30 GMT]]></title><description><![CDATA[<p>Jap. Klar geht das. Dann musst du einfach die Initialisierungsliste benutzen.</p>
<pre><code class="language-cpp">class CHolder
{
private:
    CBla m_Bla;
 CHolder ()
   :
 m_Bla ( 2 ) // oder m_Bla ( &quot;blub&quot; )
 {}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1876582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1876582</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 01 Apr 2010 19:53:30 GMT</pubDate></item><item><title><![CDATA[Reply to std::string als Stackobjekt in Klasse - problemlos? on Thu, 01 Apr 2010 20:09:48 GMT]]></title><description><![CDATA[<p>Cool <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="😃"
    /><br />
Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1876592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1876592</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Thu, 01 Apr 2010 20:09:48 GMT</pubDate></item><item><title><![CDATA[Reply to std::string als Stackobjekt in Klasse - problemlos? on Wed, 07 Apr 2010 20:30:39 GMT]]></title><description><![CDATA[<p>theliquidwave schrieb:</p>
<blockquote>
<p>pumuckl schrieb:</p>
<blockquote>
<p>strNew ist hier eine lokale Kopie, die nur<br />
einmal gelesen wird für die Zuweisung. Eine<br />
konstante Referenz hätte es hier auch getan.</p>
</blockquote>
<p>Also so, und es wäre trotzdem eine Kopie in m_strText?</p>
<pre><code class="language-cpp">void change(const std::string &amp;strNew)
{
    this-&gt;m_strText = strNew;
}
</code></pre>
</blockquote>
<p>Ich wollte mal pushen...<br />
Wann genau soll ich eine Referenz benutzen?<br />
Landet in m_strText trotzdem noch eine Kopie, die ich dann unabhängig vom echten strNew verändern kann? Ist strNew selbst die Kopie, oder wird der String erst beim <code>operator=</code> kopiert?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879043</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879043</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Wed, 07 Apr 2010 20:30:39 GMT</pubDate></item><item><title><![CDATA[Reply to std::string als Stackobjekt in Klasse - problemlos? on Wed, 07 Apr 2010 20:52:58 GMT]]></title><description><![CDATA[<p>Eine const-Referenz kannst du eigentlich immer verwenden.</p>
<p>m_strText erhält durch das = eine Kopie.<br />
strNew ist nicht die kopie, durch die Übergabe per Referenz hast du dafür gesagt, das der Parameter nicht kopiert wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879053</guid><dc:creator><![CDATA[Kleiner Troll]]></dc:creator><pubDate>Wed, 07 Apr 2010 20:52:58 GMT</pubDate></item><item><title><![CDATA[Reply to std::string als Stackobjekt in Klasse - problemlos? on Wed, 07 Apr 2010 20:54:34 GMT]]></title><description><![CDATA[<p>OK. Danke!</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879055</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Wed, 07 Apr 2010 20:54:34 GMT</pubDate></item></channel></rss>