<?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[Klassesnprobleme]]></title><description><![CDATA[<p>Hi mal wieder ich möchte wissen , wozu *this in klassen gut ist..<br />
heisst das, dass wenn ich folgende funktion habe:</p>
<pre><code class="language-cpp">a.operator=(int &amp;b);
</code></pre>
<p>dass return *this auf a zeigt oder worauf?? ich habs schonmal gefragt aber die erklärung nicht verstanden, war auch in nem andren forum... <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>und weshalb ist eigentlich inline gut, und wann setzt man es ein??? <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=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/120987/klassesnprobleme</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 13:50:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/120987.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 18 Sep 2005 18:32:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassesnprobleme on Sun, 18 Sep 2005 18:32:49 GMT]]></title><description><![CDATA[<p>Hi mal wieder ich möchte wissen , wozu *this in klassen gut ist..<br />
heisst das, dass wenn ich folgende funktion habe:</p>
<pre><code class="language-cpp">a.operator=(int &amp;b);
</code></pre>
<p>dass return *this auf a zeigt oder worauf?? ich habs schonmal gefragt aber die erklärung nicht verstanden, war auch in nem andren forum... <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>und weshalb ist eigentlich inline gut, und wann setzt man es ein??? <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=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/875145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/875145</guid><dc:creator><![CDATA[JossBoss]]></dc:creator><pubDate>Sun, 18 Sep 2005 18:32:49 GMT</pubDate></item><item><title><![CDATA[Reply to Klassesnprobleme on Sun, 18 Sep 2005 18:57:30 GMT]]></title><description><![CDATA[<p>JossBoss schrieb:</p>
<blockquote>
<p>dass return *this auf a zeigt ...</p>
</blockquote>
<p>Richtig. this ist ein Zeiger auf die eigene Instanz.</p>
<p>Mehr erklärt man dir sicherlich gern im C++-Forum :).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/875176</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/875176</guid><dc:creator><![CDATA[AJ]]></dc:creator><pubDate>Sun, 18 Sep 2005 18:57:30 GMT</pubDate></item><item><title><![CDATA[Reply to Klassesnprobleme on Sun, 18 Sep 2005 18:57:44 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=2739" rel="nofollow">AJ</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=13" rel="nofollow">DOS und Win32-Konsole</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=15" rel="nofollow">C++</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/875177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/875177</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Sun, 18 Sep 2005 18:57:44 GMT</pubDate></item><item><title><![CDATA[Reply to Klassesnprobleme on Sun, 18 Sep 2005 19:34:39 GMT]]></title><description><![CDATA[<p>Ein typischer Zuweisungsoperator (aus der MSDN (edit: brummel self-assignment vergessen)):</p>
<pre><code class="language-cpp">A&amp; A::operator=(const A&amp; rhs) 
{
  if( this == &amp;rhs) return *this; // edit: handle self-assignment (a = a)
  CopyObj(rhs);
  return *this;
}
</code></pre>
<p>Wenn Du jetzt eine Instanz einer Klasse A hast:</p>
<pre><code class="language-cpp">A a;
A b;
a.operator=(b);
</code></pre>
<p>zeigt this bei der Ausführung der Zeile a.operator=(b) auf a und *this ist a.</p>
<p>Der Zuweisungsoperator braucht für seine Arbeit, also Daten von einem anderen Objekt in das eigene Objekt eigentlich gar nichts zurückzugeben. Das eigene Objekt hat die Daten ja übernommen, warum also eine Rückgabe.<br />
In C/C++ ist folgende Zeile möglich:</p>
<pre><code class="language-cpp">a = b = c;
// das entspricht also:
a.operator=(b.operator=(c));
</code></pre>
<p>Wenn b.operator= nichts zurückgeben würde, wäre diese Syntax nicht mehr möglich.<br />
Also muss b.operator= sich selbst zurückgeben und das ist halt *this.</p>
<p>Zu Deiner Frage nach inline:<br />
inline ist erstmal ein Hinweis an den Compiler, dass Du denkst, dass es sich lohnt Aufrufe dieser Routine nicht durch einen Sprung in die Routine sondern durch kopieren des Codes an die Ausführungsstelle zu erledigen.<br />
Beispiel:</p>
<pre><code class="language-cpp">inline int max( int a, int b) {
   return a &gt; b ? a : b;
}
</code></pre>
<p>wird also in der Nutzung zu:</p>
<pre><code class="language-cpp">int someFunction()
{
   int c = max( a, b); // durch das inline kann der Compiler den Sprung wegoptimieren, also
  // int c = a &gt; b ? a : b;
}
</code></pre>
<p>Warum ist das gut? Der Sprung kostet Zeit (genauer der Stackframe, der erzeugt wird) und wenn die Routine kurz ist, kann das locker viele Prozente von der eigentlichen Routine ausmachen. Deswegen möchte man den Sprung vermeiden.<br />
Der Nachteil: Der Code wird länger, weil der Code für Deine Routine nicht einmal erzeugt wird, sondern für jeden Aufruf<br />
Das ganze ist aber nur ein Hinweis an den Compiler, d.h. er entscheidet selbstständig, ob er tatsächlich inlined. Lässt Du den Hinweis weg, wird meines Wissens bei den heutigen Compilern nicht geinlined.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/875207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/875207</guid><dc:creator><![CDATA[niemand]]></dc:creator><pubDate>Sun, 18 Sep 2005 19:34:39 GMT</pubDate></item><item><title><![CDATA[Reply to Klassesnprobleme on Mon, 19 Sep 2005 13:14:14 GMT]]></title><description><![CDATA[<p>Thx <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9698">@niemand</a> hast mir sehr mit den fragen geholfen, trotzdem hab ich leider noch eine frage:</p>
<blockquote>
<p>Wenn b.operator= nichts zurückgeben würde, wäre diese Syntax nicht mehr möglich.<br />
Also muss b.operator= sich selbst zurückgeben und das ist halt *this.</p>
</blockquote>
<p>diesen satz kapier ich irgendwie nich <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="😉"
    /> wieso wäre die syntax dann nich mehr gültig? und weshalb muss man dann this zurückgeben?</p>
<p>dann noch eine frage, mussman durch mit inline erstellte methoden mit instanzen aufrufen? oder geht das wie in deinem beispielcode mit max ohne instanzen?<br />
oder was muss man dafür tun?<br />
thx <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/875739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/875739</guid><dc:creator><![CDATA[JossBoss]]></dc:creator><pubDate>Mon, 19 Sep 2005 13:14:14 GMT</pubDate></item><item><title><![CDATA[Reply to Klassesnprobleme on Mon, 19 Sep 2005 13:34:40 GMT]]></title><description><![CDATA[<p>JossBoss schrieb:</p>
<blockquote>
<p>diesen satz kapier ich irgendwie nich <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="😉"
    /> wieso wäre die syntax dann nich mehr gültig? und weshalb muss man dann this zurückgeben?</p>
</blockquote>
<p>weil zb solche sachen nicht mehr funktioneren würden</p>
<pre><code class="language-cpp">A a1;
A a2;
A a3;
a1 = a2 = a3;
</code></pre>
<p>JossBoss schrieb:</p>
<blockquote>
<p>dann noch eine frage, mussman durch mit inline erstellte methoden mit instanzen aufrufen? oder geht das wie in deinem beispielcode mit max ohne instanzen?<br />
oder was muss man dafür tun?<br />
thx <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>
</blockquote>
<p>dies ist keine methode sonderen eine funktion, somit existiert keine instanzierungsmöglichkeit</p>
]]></description><link>https://www.c-plusplus.net/forum/post/875764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/875764</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Mon, 19 Sep 2005 13:34:40 GMT</pubDate></item><item><title><![CDATA[Reply to Klassesnprobleme on Mon, 19 Sep 2005 14:22:59 GMT]]></title><description><![CDATA[<p>ja aber weshalb würde das nich merh laufen?? <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/875820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/875820</guid><dc:creator><![CDATA[Jossboss]]></dc:creator><pubDate>Mon, 19 Sep 2005 14:22:59 GMT</pubDate></item><item><title><![CDATA[Reply to Klassesnprobleme on Mon, 19 Sep 2005 14:27:16 GMT]]></title><description><![CDATA[<p>Und was kann man dafür tun damit man sie ohne instanz aufruifen kann ( nicht statisch) oder ist das nich möglic?? <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=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/875823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/875823</guid><dc:creator><![CDATA[JossBoss]]></dc:creator><pubDate>Mon, 19 Sep 2005 14:27:16 GMT</pubDate></item><item><title><![CDATA[Reply to Klassesnprobleme on Mon, 19 Sep 2005 14:31:57 GMT]]></title><description><![CDATA[<p>JossBoss schrieb:</p>
<blockquote>
<p>ja aber weshalb würde das nich merh laufen?? <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>es würde schon laufen (vorraussetzung du machst solch eine zuweisung nicht), wäre aber syntaktisch nicht richtig.</p>
<p>siehe zb: <a href="http://www.cpp-tutor.de/cpp/le12/le12_03.htm" rel="nofollow">http://www.cpp-tutor.de/cpp/le12/le12_03.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/875828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/875828</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Mon, 19 Sep 2005 14:31:57 GMT</pubDate></item><item><title><![CDATA[Reply to Klassesnprobleme on Mon, 19 Sep 2005 14:33:35 GMT]]></title><description><![CDATA[<p>JossBoss schrieb:</p>
<blockquote>
<p>Und was kann man dafür tun damit man sie ohne instanz aufruifen kann ( nicht statisch) oder ist das nich möglic?? <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=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>FUNKTION schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/875833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/875833</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Mon, 19 Sep 2005 14:33:35 GMT</pubDate></item><item><title><![CDATA[Reply to Klassesnprobleme on Mon, 19 Sep 2005 20:15:36 GMT]]></title><description><![CDATA[<p>niemand schrieb:</p>
<blockquote>
<p>edit: brummel self-assignment vergessen</p>
</blockquote>
<p>Wobei diesbzgl. von einer generellen Verwendung abzuraten ist. Nur in seltenen Fällen (zB shared Smart Pointer) ist sowas sinnvoll. Saubere Klassenimplementierungen können das ansonsten, genau wie builtin Typen, problemlos handeln. Und da 99.99% aller Fälle keine Selbstzuweisungen sind, spart man sich praktisch immer den unnötigen Vergleich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/876112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/876112</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Mon, 19 Sep 2005 20:15:36 GMT</pubDate></item></channel></rss>