<?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[frage zu this]]></title><description><![CDATA[<p>hallo,</p>
<p>habe folgenden code:</p>
<pre><code class="language-cpp">String&amp; String::operator=(const String &amp;s)
{
	return (*this);
}
</code></pre>
<p>das ist jetzt relativ witzlos.....ich weiss.</p>
<p>mir gehts aber auch nur um das this.</p>
<p>warum braucht man hier das sternchen? Bei normalen zeigern sagen wir ja mit dem sternchen das wir den wert aus der speicheraddresse auslesen wollen.</p>
<p>z.B.:</p>
<pre><code class="language-cpp">int i=5;

int *ip;

ip=&amp;i;

cout&lt;&lt;*ip;      //gibt 5 aus
</code></pre>
<p>warum können wir dann nicht einfach nur this schreiben anstatt *this?</p>
<p>ist das hier also was ganz anderes? Dann wird das vermutlich mit arrays und c-strings genauso sein,oder?</p>
<p>tut mir wirklich sehr leid das ich so blöd fragen stelle, aber ich raffe es einfach nicht. und meine bücher und google bringen mich irgendwie auch nicht weiter.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/286357/frage-zu-this</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 22:22:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/286357.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 08 May 2011 14:23:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to frage zu this on Sun, 08 May 2011 14:23:34 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>habe folgenden code:</p>
<pre><code class="language-cpp">String&amp; String::operator=(const String &amp;s)
{
	return (*this);
}
</code></pre>
<p>das ist jetzt relativ witzlos.....ich weiss.</p>
<p>mir gehts aber auch nur um das this.</p>
<p>warum braucht man hier das sternchen? Bei normalen zeigern sagen wir ja mit dem sternchen das wir den wert aus der speicheraddresse auslesen wollen.</p>
<p>z.B.:</p>
<pre><code class="language-cpp">int i=5;

int *ip;

ip=&amp;i;

cout&lt;&lt;*ip;      //gibt 5 aus
</code></pre>
<p>warum können wir dann nicht einfach nur this schreiben anstatt *this?</p>
<p>ist das hier also was ganz anderes? Dann wird das vermutlich mit arrays und c-strings genauso sein,oder?</p>
<p>tut mir wirklich sehr leid das ich so blöd fragen stelle, aber ich raffe es einfach nicht. und meine bücher und google bringen mich irgendwie auch nicht weiter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2060457</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2060457</guid><dc:creator><![CDATA[steffanJ]]></dc:creator><pubDate>Sun, 08 May 2011 14:23:34 GMT</pubDate></item><item><title><![CDATA[Reply to frage zu this on Sun, 08 May 2011 14:31:00 GMT]]></title><description><![CDATA[<p>Weil this ein Zeiger ist, der Rückgabetyp deiner Funktion aber eine Referenz desselben Typen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2060459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2060459</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Sun, 08 May 2011 14:31:00 GMT</pubDate></item><item><title><![CDATA[Reply to frage zu this on Sun, 08 May 2011 15:57:09 GMT]]></title><description><![CDATA[<p>this beinhaltet nur die adresse von deinem objekt, *this ist das objekt selbst</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2060496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2060496</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sun, 08 May 2011 15:57:09 GMT</pubDate></item><item><title><![CDATA[Reply to frage zu this on Sun, 08 May 2011 15:59:39 GMT]]></title><description><![CDATA[<p>Du hast ja als Rückgabetyp eine Referenz auf String und nicht eine Referenz auf nen Zeiger auf String. Daher dereferenzierst du deinen this Zeiger der auf den String zeigt, nun haste den String selber und auf den verweist dann deine Referenz.</p>
<p>Lg freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2060498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2060498</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Sun, 08 May 2011 15:59:39 GMT</pubDate></item><item><title><![CDATA[Reply to frage zu this on Sun, 08 May 2011 16:21:33 GMT]]></title><description><![CDATA[<p>Referenzen werden mit lvalues initialisiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2060516</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2060516</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Sun, 08 May 2011 16:21:33 GMT</pubDate></item><item><title><![CDATA[Reply to frage zu this on Sun, 08 May 2011 17:24:45 GMT]]></title><description><![CDATA[<p>Nein.<br />
Referenzen können auch mit Rvalues initialisiert werden, nur binden sie dann das Rvalue nicht direkt und müssen konstant sein. Eventuell wird ein temporäres Objekt erzeugt, das aber selbst nicht konstant sein muss, und auf das die Referenz zeigt - Das ist aber von der Implementierung abhängig.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">int i = 42;
int&amp; ri = i; //OK, Lvalue-Ausdruck auf rechter Seite
const int&amp; cri = 42; //OK! Rechte Seite ist ein Rvalue: Ein temporäres Objekt vom Typ const int (!) wird erzeugt.

struct Foo {
  Foo&amp; get () { return this; }
  void bar () { }
};

Foo&amp; foo = Foo(); //Falsch, nur konstante Referenzen können mit einem Rvalue initialisiert werden
Foo const&amp; cfoo = Foo(); //OK! Rechte Seite ist ein Rvalue: Ein temporäres Objekt vom Typ Foo (!) wird erzeugt.
Foo&amp; funny_foo = Foo().get(); //OK, da das temporäre Objekt ja nicht konstant ist
funny_foo.bar(); //Falsch! Das temporäre Objekt ist schon wieder zerstört, da der volle Ausdruck, in dem
//es erzeugt wurde (s.o.) bereits vorbei ist.
cfoo.bar(); //OK! Eine konstante Referenz wurde mit dem temporären Objekt initialisiert
//Das bewirkt, dass das temporäre am Leben bleibt.
</code></pre>
<p>Aber das hat sowieso nichts mit der Frage des OPs zu tun. Nur zum Spaß könnte er auch schreiben:</p>
<pre><code class="language-cpp">struct String {
   void fun () {
      String*const&amp; fun = this;
   }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2060548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2060548</guid><dc:creator><![CDATA[davie]]></dc:creator><pubDate>Sun, 08 May 2011 17:24:45 GMT</pubDate></item><item><title><![CDATA[Reply to frage zu this on Sun, 08 May 2011 20:10:50 GMT]]></title><description><![CDATA[<p>Hier noch ne kleine Anmerkung, die vll den TE interessieren könnte, damit er auch weiß warum man rvalues und objekte von anderen typen nur an const referenzen binden kann.</p>
<pre><code class="language-cpp">double d = 3.45;
int const&amp; rd = d;    // Ok, es wird ein temporäres int Objekt erstellt, auf das dann die Referenz verweist also wird daraus:

int temp = d;
int const&amp; rd = temp; // Wäre es jedoch eine nicht konstante Referenz, könnte sie nun den Wert des Objekts auf das sie zeigt ändern, allerdings
                      //ist das ja nur das Temp-Objekt und Programmierer können denken, das eigentliche Objekt würde geändert werden, was ja nicht der Fall ist,
                      //daher is es nur für const Referenzen erlaubt.
</code></pre>
<p>Lg freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2060638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2060638</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Sun, 08 May 2011 20:10:50 GMT</pubDate></item><item><title><![CDATA[Reply to frage zu this on Tue, 10 May 2011 13:43:19 GMT]]></title><description><![CDATA[<p>super klasse!</p>
<p>vielen dank für die hilfe!</p>
<p>bin echt begeistert von diesem forum! soviel hilfe auf einmal! echt top!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2061253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2061253</guid><dc:creator><![CDATA[steffanJ]]></dc:creator><pubDate>Tue, 10 May 2011 13:43:19 GMT</pubDate></item><item><title><![CDATA[Reply to frage zu this on Tue, 10 May 2011 14:01:12 GMT]]></title><description><![CDATA[<p>Zu der ganzen Referenzbindungsgeschichte noch folgendes:</p>
<p><a href="http://herbsutter.com/2008/01/01/gotw-88-a-candidate-for-the-most-important-const/" rel="nofollow">http://herbsutter.com/2008/01/01/gotw-88-a-candidate-for-the-most-important-const/</a></p>
<p>Frage: hat einer ne Ahnung welches der vielen möglichen #defines und compilerflags beim MSVC die Warnung ausschaltet, wenn die Extension für &quot;reference-to-non-const-boun-to-temporary&quot; zuschlägt?</p>
<pre><code class="language-cpp">int foo()
{
  return 5;
}

int main()
{
  int const&amp; ri = foo(); //OK
  int &amp; ri2 = foo(); //kein Standard-C++, aber MSVC-Extension!
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2061261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2061261</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 10 May 2011 14:01:12 GMT</pubDate></item><item><title><![CDATA[Reply to frage zu this on Tue, 10 May 2011 16:11:01 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Frage: hat einer ne Ahnung welches der vielen möglichen #defines und compilerflags beim MSVC die Warnung ausschaltet, wenn die Extension für &quot;reference-to-non-const-boun-to-temporary&quot; zuschlägt?</p>
</blockquote>
<p>Ich würde es mal mit <code>#pragma warning</code> versuchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2061313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2061313</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 10 May 2011 16:11:01 GMT</pubDate></item></channel></rss>