<?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[Referenz oder Pointer als Member?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin im Internet über Coding Rules gestolpert, in denen es heißt, dass man immer eine Referenz einem Pointer den Vorzug geben sollte...</p>
<p>Ich habe bisher immer so programmiert, dass wenn Polymorphie zum Einsatz kam, ich mit Pointern als Member Variablen in meinen Klassen gearbeitet habe. Auch so, wenn man sich Beispielcode ansieht, sehe ich irgendwie nie Referenzen als Membervariablen einer Klasse. Habe ich mir immer nur die falschen Beispiele angesehen? Oder anders: Ist es &quot;normal&quot; Referenzen als Membervariablen Pointern vorzuziehen?</p>
<p>Vielen Dank und noch einen schönen Sonntagabend!</p>
<p>Tom</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/265579/referenz-oder-pointer-als-member</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 23:34:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/265579.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 25 Apr 2010 17:46:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Referenz oder Pointer als Member? on Sun, 25 Apr 2010 17:46:27 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin im Internet über Coding Rules gestolpert, in denen es heißt, dass man immer eine Referenz einem Pointer den Vorzug geben sollte...</p>
<p>Ich habe bisher immer so programmiert, dass wenn Polymorphie zum Einsatz kam, ich mit Pointern als Member Variablen in meinen Klassen gearbeitet habe. Auch so, wenn man sich Beispielcode ansieht, sehe ich irgendwie nie Referenzen als Membervariablen einer Klasse. Habe ich mir immer nur die falschen Beispiele angesehen? Oder anders: Ist es &quot;normal&quot; Referenzen als Membervariablen Pointern vorzuziehen?</p>
<p>Vielen Dank und noch einen schönen Sonntagabend!</p>
<p>Tom</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888186</guid><dc:creator><![CDATA[T00m]]></dc:creator><pubDate>Sun, 25 Apr 2010 17:46:27 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz oder Pointer als Member? on Sun, 25 Apr 2010 17:49:53 GMT]]></title><description><![CDATA[<p>T00m schrieb:</p>
<blockquote>
<p>ich bin im Internet über Coding Rules gestolpert, in denen es heißt, dass man immer eine Referenz einem Pointer den Vorzug geben sollte...</p>
</blockquote>
<p>Das ist totaler Schwachsinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888187</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888187</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 25 Apr 2010 17:49:53 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz oder Pointer als Member? on Sun, 25 Apr 2010 18:01:55 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>T00m schrieb:</p>
<blockquote>
<p>ich bin im Internet über Coding Rules gestolpert, in denen es heißt, dass man immer eine Referenz einem Pointer den Vorzug geben sollte...</p>
</blockquote>
<p>Das ist totaler Schwachsinn.</p>
</blockquote>
<p>Genau. Diese &quot;Regel&quot; scheiter auch schon daran, dass es nicht immer möglich ist eine Referenz zu verwenden.<br />
Wenn man natürlich eine Referenz verwenden kann, dann sollte man dies tun, da man sich Dereferenzierungen spart und die es einfach komfortabler ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888194</guid><dc:creator><![CDATA[dfasd]]></dc:creator><pubDate>Sun, 25 Apr 2010 18:01:55 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz oder Pointer als Member? on Sun, 25 Apr 2010 18:06:54 GMT]]></title><description><![CDATA[<p>dfasd schrieb:</p>
<blockquote>
<p>Wenn man natürlich eine Referenz verwenden kann, dann sollte man dies tun</p>
</blockquote>
<p>Das ist totaler Schwachsinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888195</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 25 Apr 2010 18:06:54 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz oder Pointer als Member? on Sun, 25 Apr 2010 18:09:47 GMT]]></title><description><![CDATA[<p>Ok, danke euch Beiden erstmal für die schnellen Antworten.<br />
Ich bin aber total unsicher in der Wahl zwischen Referenzen und Pointern...<br />
Wann ist es denn sinnvoll eine Referenz als Membervariable zu nehmen und wann lieber einen Pointer?<br />
Außerdem habe ich oft das Problem, dass ich in meinem Code global Pointer habe, die ja nicht so schick sind... ist aber wohl ne Design Schwäche von mir.</p>
<p>Viele Grüße<br />
Tom</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888197</guid><dc:creator><![CDATA[T00m]]></dc:creator><pubDate>Sun, 25 Apr 2010 18:09:47 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz oder Pointer als Member? on Sun, 25 Apr 2010 18:11:59 GMT]]></title><description><![CDATA[<p>dfasd schrieb:</p>
<blockquote>
<p>Wenn man natürlich eine Referenz verwenden kann, dann sollte man dies tun, da man sich Dereferenzierungen spart und die es einfach komfortabler ist.</p>
</blockquote>
<p>Das ist absolut richtig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888199</guid><dc:creator><![CDATA[Nukularfüsiker]]></dc:creator><pubDate>Sun, 25 Apr 2010 18:11:59 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz oder Pointer als Member? on Sun, 25 Apr 2010 18:18:40 GMT]]></title><description><![CDATA[<p>T00m schrieb:</p>
<blockquote>
<p>Ok, danke euch Beiden erstmal für die schnellen Antworten.<br />
Ich bin aber total unsicher in der Wahl zwischen Referenzen und Pointern...</p>
</blockquote>
<p>Zum Glück ist es oft egal, was Du nimmst. Der Code wird von Pointern nicht schlechter. Da sich Referenzen wie echte Objekte anfühlen, ist es oft verwirrend, Sachen wie</p>
<pre><code class="language-cpp">Foo::f(){
   x+=5;
   bar.update(2);
}
</code></pre>
<p>zu lesen. Viele denken hier, bar sei ein Objekt, das ganz und gar Teil von *this ist.<br />
Wenn bar außerhalb lebt, kann man das mit</p>
<pre><code class="language-cpp">Foo::f(){
   x+=5;
   bar-&gt;update(2);
}
</code></pre>
<p>ruhig herausbrüllen.<br />
Referenzen hier sehe ich eigentlich nur bei</p>
<pre><code class="language-cpp">Foo::f(){
   x+=5;
   theWorld-&gt;update(2);
}
</code></pre>
<p>wenn jedes Objekt eine Referenz auf die Welt hält, in der es lebt. Oder auf die Socketbibliothek oder den Threadpool oder sowas.</p>
<p>T00m schrieb:</p>
<blockquote>
<p>Außerdem habe ich oft das Problem, dass ich in meinem Code global Pointer habe, die ja nicht so schick sind... ist aber wohl ne Design Schwäche von mir.</p>
</blockquote>
<p>Die löschen sich aber dann nicht. Ich habe eigentlich nur globale Objekte. Außer sowas wie lookup-tables, da nehme ich auch mal globale Zeiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888201</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 25 Apr 2010 18:18:40 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz oder Pointer als Member? on Sun, 25 Apr 2010 18:21:12 GMT]]></title><description><![CDATA[<p>T00m schrieb:</p>
<blockquote>
<p>Ok, danke euch Beiden erstmal für die schnellen Antworten.<br />
Ich bin aber total unsicher in der Wahl zwischen Referenzen und Pointern...<br />
Wann ist es denn sinnvoll eine Referenz als Membervariable zu nehmen und wann lieber einen Pointer?<br />
Außerdem habe ich oft das Problem, dass ich in meinem Code global Pointer habe, die ja nicht so schick sind... ist aber wohl ne Design Schwäche von mir.</p>
</blockquote>
<p>Referenzen können als Member genau eines: Unveränderbar auf ein einmal (beim Konstruktoraufruf) festgelegtes Objekt verweisen. Hat man diese Anforderung, so ist die Referenz die richtige Wahl.</p>
<p>Pointer können andere Sachen: Auf andere Objekte zeigen, auf Speicherbereiche zeigen, auf Null zeigen, ihren Wert ändern, Polymorphie ermöglichen. Hat man diese Anforderungen, ist es richtig, einen Pointer zu verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888202</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 25 Apr 2010 18:21:12 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz oder Pointer als Member? on Sun, 25 Apr 2010 18:22:22 GMT]]></title><description><![CDATA[<p>Ich habe schon einige Male gelesen, dass Mehrfachreferenzen undefiniertes Verhalten hervorrufen.<br />
Wenn ich eine Klasse, die eine Referenz enthält, referenziere, habe ich dann bereits eine Mehrfachreferenz?</p>
<p>In Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

struct foo
{
	foo(int&amp; i): val(i) { }
    int&amp; val;
};

int main()
{
	int a = 5;
	foo test(a);
	foo&amp; testref = test;
	testref.val = 2;
	std::cout &lt;&lt; &quot;a: &quot; &lt;&lt; a &lt;&lt; &quot; - test.val: &quot; &lt;&lt; test.val &lt;&lt; &quot; - testref.val: &quot; &lt;&lt; testref.val;
	std::cin.get();
}
</code></pre>
<p>Ist es definiertes Verhalten, dass überall 2 herauskommt? Und wenn ja, stimmt das mit den Mehrfachreferenzen oder habe ich das falsch in Erinnerung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888204</guid><dc:creator><![CDATA[Mehrfachreferenz]]></dc:creator><pubDate>Sun, 25 Apr 2010 18:22:22 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz oder Pointer als Member? on Sun, 25 Apr 2010 18:27:51 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Referenzen können als Member genau eines: Unveränderbar auf ein einmal (beim Konstruktoraufruf) festgelegtes Objekt verweisen. Hat man diese Anforderung, so ist die Referenz die richtige Wahl.</p>
<p>Pointer können andere Sachen: Auf andere Objekte zeigen, auf Speicherbereiche zeigen, auf Null zeigen, ihren Wert ändern, Polymorphie ermöglichen. Hat man diese Anforderungen, ist es richtig, einen Pointer zu verwenden.</p>
</blockquote>
<p>Zusatzbemerkung: Referenzen können Polymorphie auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888209</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 25 Apr 2010 18:27:51 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz oder Pointer als Member? on Mon, 26 Apr 2010 08:54:24 GMT]]></title><description><![CDATA[<p>Nukularfüsiker schrieb:</p>
<blockquote>
<p>dfasd schrieb:</p>
<blockquote>
<p>Wenn man natürlich eine Referenz verwenden kann, dann sollte man dies tun, da man sich Dereferenzierungen spart und die es einfach komfortabler ist.</p>
</blockquote>
<p>Das ist absolut richtig.</p>
</blockquote>
<p>Also der Teil nach dem Komma <em>ist totaler Schwachsinn.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888349</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 26 Apr 2010 08:54:24 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz oder Pointer als Member? on Mon, 26 Apr 2010 08:56:40 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Nukularfüsiker schrieb:</p>
<blockquote>
<p>dfasd schrieb:</p>
<blockquote>
<p>Wenn man natürlich eine Referenz verwenden kann, dann sollte man dies tun, da man sich Dereferenzierungen spart und die es einfach komfortabler ist.</p>
</blockquote>
<p>Das ist absolut richtig.</p>
</blockquote>
<p>Also der Teil nach dem Komma <em>ist totale Schwachsinn.</em></p>
</blockquote>
<p>Da sind zwei Kommas. Mit der pauschalen Antwort wollte ich auf volkards Weise &quot;argumentieren&quot;, aber <em>totaler Schwachsinn</em> ist die Aussage doch nicht. Im Sinne von: Wenn man eine Referenz braucht, sollte man auch eine benutzen, statt sich den Code mit Sternchen vollzukleistern.<br />
Pauschalisierungen sind halt generell <em>immer</em> schlecht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888356</guid><dc:creator><![CDATA[Nukularfüsiker]]></dc:creator><pubDate>Mon, 26 Apr 2010 08:56:40 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz oder Pointer als Member? on Mon, 26 Apr 2010 09:05:45 GMT]]></title><description><![CDATA[<p>Nukularfüsiker schrieb:</p>
<blockquote>
<p>Wenn man eine Referenz braucht, sollte man auch eine benutzen</p>
</blockquote>
<p>Ja, wenn man sie braucht, aber nicht wenn man sie verwenden kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888363</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Mon, 26 Apr 2010 09:05:45 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz oder Pointer als Member? on Mon, 26 Apr 2010 11:03:31 GMT]]></title><description><![CDATA[<p>Nukularfüsiker schrieb:</p>
<blockquote>
<blockquote>
<p>Also der Teil nach dem Komma <em>ist totale Schwachsinn.</em></p>
</blockquote>
<p>Da sind zwei Kommas.</p>
</blockquote>
<p>Es ist deiner Erklärung erster Teil gemeint.<br />
Referenzen und Zeiger werden dereferenziert, wenn man darauf zugreift. Das wird bei beiden gleich lange dauern. Einzig ist die Verwendung von Referenzen angenehmer, da man sich bei manchen Sachen ein &quot;*&quot; oder eben einen &quot;-&gt;&quot; sparen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888418</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888418</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Mon, 26 Apr 2010 11:03:31 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz oder Pointer als Member? on Mon, 26 Apr 2010 12:43:45 GMT]]></title><description><![CDATA[<p>Nukularfüsiker schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Nukularfüsiker schrieb:</p>
<blockquote>
<p>dfasd schrieb:</p>
<blockquote>
<p>Wenn man natürlich eine Referenz verwenden kann, dann sollte man dies tun, da man sich Dereferenzierungen spart und die es einfach komfortabler ist.</p>
</blockquote>
<p>Das ist absolut richtig.</p>
</blockquote>
<p>Also der Teil nach dem Komma <em>ist totale Schwachsinn.</em></p>
</blockquote>
<p>Da sind zwei Kommas. Mit der pauschalen Antwort wollte ich auf volkards Weise &quot;argumentieren&quot;, aber <em>totaler Schwachsinn</em> ist die Aussage doch nicht. Im Sinne von: Wenn man eine Referenz braucht, sollte man auch eine benutzen, statt sich den Code mit Sternchen vollzukleistern.<br />
Pauschalisierungen sind halt generell <em>immer</em> schlecht.</p>
</blockquote>
<p>Wähle ein beliebiges der beiden Kommata aus, macht keinen Unterschied.</p>
<p>Ich meine die Begrüngung &quot;da man sich Dereferenzierungen spart und es einfach komfortabler ist&quot; ist Schwachsinn. Ob ich -&gt; oder . schreibe ist egal. Praktisch sind Referenzen IMO aus anderen Gründen. z.B. deswegen weil sie nicht &quot;re-bound&quot; werden können, oder weil sie immer auf was gültiges zeigen &quot;müssen&quot;.</p>
<p>&quot;.&quot; statt &quot;-&gt;&quot; halte ich eigentlich für eher schlecht als gut, denn &quot;p-&gt;&quot; macht wenigstens kenntlich dass hier über einen Zeiger zugegriffen wird, also &quot;p&quot; nicht selbst das objekt &quot;ist&quot;. &quot;r.&quot; dagegen sieht genau so aus als ob &quot;r&quot; selbst das Objekt wäre. Wobei ich der Meinung bin dass das ein relativ schwaches Argument ist, dem man keine besondere Bedeutung zumessen sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888469</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 26 Apr 2010 12:43:45 GMT</pubDate></item></channel></rss>