<?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[Wann benutzt man die &amp;quot;this&amp;quot;-Referenz]]></title><description><![CDATA[<p>Hi,<br />
Wofür genau brauche ich die &quot;this&quot;-Referenz?<br />
Also wenn man ein Objekt erzeugt, kann man ja mit <a href="http://this.XXX" rel="nofollow">this.XXX</a> auf das Objekt selbst zugreifen. Aber wofür brauche ich das, wenn die Variablennamen ungleich sind? Also hier mal ein Beispiel, was beides dasselbe machen sollte.</p>
<pre><code>class Test
{
&lt;!-- ... --&gt;
int blub;
void MachWas(int blub)
{
    this.blub = blub;
}

oder
void MachWas(int blaa)
{
    blub = blaa;
}

};
</code></pre>
<p>Also wo ist der Unterschied bzw. wann genau verwende ich dann &quot;this.&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/208140/wann-benutzt-man-die-quot-this-quot-referenz</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 20:13:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/208140.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 15 Mar 2008 10:33:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wann benutzt man die &amp;quot;this&amp;quot;-Referenz on Sat, 15 Mar 2008 10:40:33 GMT]]></title><description><![CDATA[<p>Hi,<br />
Wofür genau brauche ich die &quot;this&quot;-Referenz?<br />
Also wenn man ein Objekt erzeugt, kann man ja mit <a href="http://this.XXX" rel="nofollow">this.XXX</a> auf das Objekt selbst zugreifen. Aber wofür brauche ich das, wenn die Variablennamen ungleich sind? Also hier mal ein Beispiel, was beides dasselbe machen sollte.</p>
<pre><code>class Test
{
&lt;!-- ... --&gt;
int blub;
void MachWas(int blub)
{
    this.blub = blub;
}

oder
void MachWas(int blaa)
{
    blub = blaa;
}

};
</code></pre>
<p>Also wo ist der Unterschied bzw. wann genau verwende ich dann &quot;this.&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474709</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474709</guid><dc:creator><![CDATA[Pille456]]></dc:creator><pubDate>Sat, 15 Mar 2008 10:40:33 GMT</pubDate></item><item><title><![CDATA[Reply to Wann benutzt man die &amp;quot;this&amp;quot;-Referenz on Sat, 15 Mar 2008 10:44:24 GMT]]></title><description><![CDATA[<p>&quot;this.&quot; sowieso nicht, &quot;this&quot; ist ein Zeiger, also dann &quot;this-&gt;&quot; <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 />
Ich persönlich brauche &quot;this&quot; auch nur sehr selten, das hier wäre z.B. ein möglicher Anwendungsfall:</p>
<pre><code class="language-cpp">void kraks( Bla* b )
{
}

class Bla
{
    void foo()
    {
        kraks( this );
    }
};
</code></pre>
<p>natürlich noch mit Forward-Declarations, aber es geht ja ums Prinzip <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/1474717</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474717</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 15 Mar 2008 10:44:24 GMT</pubDate></item><item><title><![CDATA[Reply to Wann benutzt man die &amp;quot;this&amp;quot;-Referenz on Sat, 15 Mar 2008 10:49:30 GMT]]></title><description><![CDATA[<p>Ja, genau so kenne ich das auch nur.<br />
Nur stieß ich vor kurzem über eine java-Klasse (weiß nicht genau in wiefern java und c++ da unterschiedlich sind), in der jeder interne Methodenaufruf und jeder interne Variablenzugriff mit &quot;this.&quot; begann. Da wurde ich dann erstmal stutzig, weil es ja auch ohne &quot;this.&quot; geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474719</guid><dc:creator><![CDATA[Pille456]]></dc:creator><pubDate>Sat, 15 Mar 2008 10:49:30 GMT</pubDate></item><item><title><![CDATA[Reply to Wann benutzt man die &amp;quot;this&amp;quot;-Referenz on Sat, 15 Mar 2008 10:53:25 GMT]]></title><description><![CDATA[<p>Ja, das machen manche um deutlich zu machen, dass sie an dieser Stelle eine Membervariable/-Funktion verwenden. Einfach ein Stil-Grund. Manche &quot;markieren&quot; ihre Membervariablen auch, indem sie ihre Namen immer mit &quot;m_&quot; oder &quot;_&quot; beginnen lassen, ist in etwa der selbe Effekt <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/1474723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474723</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 15 Mar 2008 10:53:25 GMT</pubDate></item><item><title><![CDATA[Reply to Wann benutzt man die &amp;quot;this&amp;quot;-Referenz on Sat, 15 Mar 2008 15:03:39 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void MachWas(int blub)
{
    this-&gt;blub = blub;
}
</code></pre>
<p>In diesem Fall ist this nötig, da blub jetzt nur noch den Parameter bezeichnet, nicht mehr die Membervariable. Aber man sollte da ohnehin unterschiedliche Bezeichner wählen.<br />
Den this-Zeiger braucht man eher bei der Übergabe an Funktionen, die einen Zeiger benötigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474838</guid><dc:creator><![CDATA[Nanyuki]]></dc:creator><pubDate>Sat, 15 Mar 2008 15:03:39 GMT</pubDate></item><item><title><![CDATA[Reply to Wann benutzt man die &amp;quot;this&amp;quot;-Referenz on Sat, 15 Mar 2008 15:16:14 GMT]]></title><description><![CDATA[<p>Genau deshalb bekommen meine Member immer ein <code>m_</code> spendiert. Dann kann man so schöne Sachen machen wie:</p>
<pre><code class="language-cpp">class foo_t {

    private:
        int m_bar;

    public:
        const int &amp;bar;
        foo_t( int bar ) : m_bar( bar ), bar( m_bar ) { }
};

int main( ) {

    foo_t foo( 42 );                   // Der user &quot;sieht&quot; mit IntelliSense &quot;bar&quot;
    int bar = foo.bar; // und greift auf das Attribut auch mit bar lesend zu.
}
</code></pre>
<p>greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474850</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Sat, 15 Mar 2008 15:16:14 GMT</pubDate></item><item><title><![CDATA[Reply to Wann benutzt man die &amp;quot;this&amp;quot;-Referenz on Sat, 15 Mar 2008 15:43:04 GMT]]></title><description><![CDATA[<p>stilfrage. ich verzichte meistens auf ein m_ oder einen unterstrich am ende und habe trotzdem sehr selten das bedürfnis, this zu verwenden (in dem kontext).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474878</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Sat, 15 Mar 2008 15:43:04 GMT</pubDate></item><item><title><![CDATA[Reply to Wann benutzt man die &amp;quot;this&amp;quot;-Referenz on Sat, 15 Mar 2008 23:33:01 GMT]]></title><description><![CDATA[<p>Im Zusammenhang mit templates und Vererbung gibts auch einige Ecken wo man this verwenden muss, um dem Compiler klarzumachen, dass man sich auf ein (geerbtes) member bezieht. Ich hab gerade kein beispiel zur Hand.<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/8250">@swordfish</a>: bei deinem Beispielcode gruselts mir ehrlich gesagt ein wenig. Auch wenn es nur lesend ist, gibst du durch die Referenz direkten Lesezugriff auf die innereien deiner Klasse. Wenn du bei einer späteren Revision m_bar durch eine Funktion ersetzen willst, die einen Wert berechnet, dann musst du die Referenz rausschmeißen und alle Klienten dürfen nicht nur neu kompilieren sondern auch noch sämliche Codestellen suchen und ändern die sich auf bar beziehen, weil bar dann ja nicht mehr gibt. Aus dem Grunde gibts Getter Methoden.</p>
<pre><code class="language-cpp">class Foo {
  int bar;
public:
  Foo(int bar) : bar(bar) {}
  int GetBar() { return bar; }
};

int main() {
  Foo foo(42);
  int bar = foo.GetBar();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1475058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1475058</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 15 Mar 2008 23:33:01 GMT</pubDate></item><item><title><![CDATA[Reply to Wann benutzt man die &amp;quot;this&amp;quot;-Referenz on Sun, 16 Mar 2008 02:34:05 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<pre><code class="language-cpp">Foo(int bar) : bar(bar) {}
</code></pre>
</blockquote>
<p>das ist im prinzip auch der grund, warum ich keine unterstriche oder m_ bei meinen membervariablen führe.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9960">@pumuckl</a>: so ein beispiel lässt sich leicht herbeizaubern.</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
struct Base
{
  T t;
};

template &lt;typename T&gt;
struct Derived : Base&lt;T&gt;
{
  void foo ()
  {
     t = 12; //Fehler
  }
};
</code></pre>
<p>lass mich mal ausschlafen, dann erklär ich's auch <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/1475080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1475080</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Sun, 16 Mar 2008 02:34:05 GMT</pubDate></item><item><title><![CDATA[Reply to Wann benutzt man die &amp;quot;this&amp;quot;-Referenz on Sun, 16 Mar 2008 19:17:37 GMT]]></title><description><![CDATA[<p>Mache ich auch nur bei ganz klar &quot;statischen&quot; Attributen...</p>
<p>greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1475450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1475450</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Sun, 16 Mar 2008 19:17:37 GMT</pubDate></item><item><title><![CDATA[Reply to Wann benutzt man die &amp;quot;this&amp;quot;-Referenz on Sun, 16 Mar 2008 21:57:04 GMT]]></title><description><![CDATA[<p>&quot;ganz klar&quot; gibts leider bei Programmen nur dann, wenn sie nicht mehr weiterentwickelt und gewartet werden. Eine Eigenschaft von Software, die weiterentwickelt wird ist immer, dass man vorher nie weiß und planen kann, was später mal an Änderungen vonnöten ist. Ein weiteres Argument gegen Referenzen im public Interface ist, dass man als Klient gewohnt ist, auf Klassenattribute nur mittels Funktionen zuzugreifen. Wenn man dann plötzlich auf eine nicht-Funktion zugreifen muss, irritiert das...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1475526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1475526</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sun, 16 Mar 2008 21:57:04 GMT</pubDate></item><item><title><![CDATA[Reply to Wann benutzt man die &amp;quot;this&amp;quot;-Referenz on Mon, 17 Mar 2008 01:39:04 GMT]]></title><description><![CDATA[<p>Wird jetzt zwar off topic, aber gut. Bastel mir doch bitte ein Szenario, bei dem ich bei einem allfälligen <code>human_t::get_sex( )</code> etwas am Objekt herumbasteln muss und deshalb das Attribut nicht durchreichen kann. Gewohnheit? Ich bin es <em>gewohnt</em>, auf <em>public member</em> einer Klasse zuzugreifen. Ob das nun eine Methode oder ein Attribut ist, juckt mich ehrlichgesagt nicht. <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>greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1475565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1475565</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Mon, 17 Mar 2008 01:39:04 GMT</pubDate></item><item><title><![CDATA[Reply to Wann benutzt man die &amp;quot;this&amp;quot;-Referenz on Mon, 17 Mar 2008 06:48:26 GMT]]></title><description><![CDATA[<p>Swordfish schrieb:</p>
<blockquote>
<p>Ich bin es <em>gewohnt</em>, auf <em>public member</em> einer Klasse zuzugreifen. Ob das nun eine Methode oder ein Attribut ist, juckt mich ehrlichgesagt nicht.</p>
</blockquote>
<p>Ich glaube dies würde sich ändern wenn du bereits die Nachteile kräftig ausbaden durftest die ein direkter Attributszugriff hat. Ich habe Beispielsweise ein Projekt übernehmen müssen, das dies sehr intensiv tut, und bis heute nicht die nötige Zeit gehabt es komplett davon zu befreien.</p>
<p>Selbst ein getter und setter das nur durchreicht ist besser als ein direkter Attributszugriff, da man später noch Änderungen (seien es zusätzliche Prüfungen, Rechtebehandlungen oder gar Mechanismen wegen Threading) machen kann ohne die Schnittstelle ändern zu müssen.</p>
<p>Ja, es gibt Teile einer Schnittstelle die sich nicht oder nur sehr unwahrscheinlich ändern. Aber es ist immer besser eine saubere Schnittstelle zu haben die, die Implementierung und Attribute kapselt, da man so noch ohne weiteres die Klasse in einen Adapter für eine Neuimplementierung umtauschen kann.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1475582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1475582</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 17 Mar 2008 06:48:26 GMT</pubDate></item><item><title><![CDATA[Reply to Wann benutzt man die &amp;quot;this&amp;quot;-Referenz on Mon, 17 Mar 2008 06:58:52 GMT]]></title><description><![CDATA[<p>das wichtige schlagwort ist hierbei schnittstelle. sobald man innereien einer klasse offenlegt, arbeitet man gegen die implementierung einer klasse und nicht mehr gegen die schnittstelle. einmal einen public member offengelegt, schon ist die implementierung in stein gemeißelt und jede spätere änderung wird umständlich und zieht weite kreise.<br />
dass das nicht nur ein theoretisches problem darstellt, konnte ich schon diverse male erleben.</p>
<p>und zur eigentlichen frage: ich glaube die verwendung von this zum qualifizierten zugriff auf member ist eher in der java welt verbreitet. in der c-welt werden member eher mit einem prefix versehen. wahrscheinlich aus historischen gründen. denn ehrlich gesagt fällt mir kein grund ein, warum ein &quot;m_&quot; schöner, besser oder effizienter wäre, als ein &quot;this-&gt;&quot; vor jedem member-zugriff.<br />
ich persönlich verwende lieber this, um zugriff zu qualifizieren. es ist ein sprachkonstrukt und schliesst so, im gegensatz zu selbst definierten prefixes, fehler schon auf compilerebene aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1475583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1475583</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Mon, 17 Mar 2008 06:58:52 GMT</pubDate></item><item><title><![CDATA[Reply to Wann benutzt man die &amp;quot;this&amp;quot;-Referenz on Mon, 17 Mar 2008 08:09:31 GMT]]></title><description><![CDATA[<p>Jaja... ihr habt ja Recht. Ich werde mir die Gewohnheit austreiben. (<em>Schnittstelle</em> war der Aha-Moment <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>greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1475609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1475609</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Mon, 17 Mar 2008 08:09:31 GMT</pubDate></item></channel></rss>