<?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 by Pointer und wann by Reference]]></title><description><![CDATA[<p>Hallo,</p>
<p>es geht um die beiden Funktionen oben. Wann sollte man was benutzen und wo ist genau der Unterschied? Irgendwie verstehe ich das noch nicht so genau:-(</p>
<pre><code>#include &lt;string&gt;
#include &lt;vector&gt;
#include &lt;Windows.h&gt;
using namespace std;

int fillvector1(int i, vector&lt;string&gt; *vec) //Call by Pointer
{
	for (int j = 0; j &lt;= i; ++j)
	{
		vec-&gt;push_back(&quot;Hallo welt1&quot;);
	}
	return vec-&gt;size();
}
int fillvector2(int i, vector&lt;string&gt; &amp;vec) //Call by Reference
{
	for (int j = 0; j &lt;= i; ++j)
	{
		vec.push_back(&quot;Hallo welt2&quot;);
	}
	return vec.size();
}
int fillvector3(int i, vector&lt;string&gt;  vec) //Call by Value
{
	for (int j = 0; j &lt;= i; ++j)
	{
		vec.push_back(&quot;Hallo welt3&quot;);
	}
	return vec.size();
}

int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	vector&lt;string&gt; *strvec1 = new vector&lt;string&gt;();
	vector&lt;string&gt; *strvec2 = new vector&lt;string&gt;();
	vector&lt;string&gt;  strvec3;

	int size1 = fillvector1(1001,  strvec1);
	int size2 = fillvector2(1002, *strvec2);
	int size3 = fillvector3(1003,  strvec3);

	MessageBox(NULL, strvec1-&gt;at(0).c_str(), &quot;Test1&quot;, MB_OK); //Geht
	MessageBox(NULL, strvec2-&gt;at(0).c_str(), &quot;Test2&quot;, MB_OK); //Geht
	MessageBox(NULL, strvec3. at(0).c_str(), &quot;Test3&quot;, MB_OK); //Geht nicht weil Inhalt nur in Funktion präsent
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/322283/wann-by-pointer-und-wann-by-reference</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Jul 2026 03:53:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/322283.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 13 Dec 2013 16:04:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Fri, 13 Dec 2013 16:04:12 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>es geht um die beiden Funktionen oben. Wann sollte man was benutzen und wo ist genau der Unterschied? Irgendwie verstehe ich das noch nicht so genau:-(</p>
<pre><code>#include &lt;string&gt;
#include &lt;vector&gt;
#include &lt;Windows.h&gt;
using namespace std;

int fillvector1(int i, vector&lt;string&gt; *vec) //Call by Pointer
{
	for (int j = 0; j &lt;= i; ++j)
	{
		vec-&gt;push_back(&quot;Hallo welt1&quot;);
	}
	return vec-&gt;size();
}
int fillvector2(int i, vector&lt;string&gt; &amp;vec) //Call by Reference
{
	for (int j = 0; j &lt;= i; ++j)
	{
		vec.push_back(&quot;Hallo welt2&quot;);
	}
	return vec.size();
}
int fillvector3(int i, vector&lt;string&gt;  vec) //Call by Value
{
	for (int j = 0; j &lt;= i; ++j)
	{
		vec.push_back(&quot;Hallo welt3&quot;);
	}
	return vec.size();
}

int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	vector&lt;string&gt; *strvec1 = new vector&lt;string&gt;();
	vector&lt;string&gt; *strvec2 = new vector&lt;string&gt;();
	vector&lt;string&gt;  strvec3;

	int size1 = fillvector1(1001,  strvec1);
	int size2 = fillvector2(1002, *strvec2);
	int size3 = fillvector3(1003,  strvec3);

	MessageBox(NULL, strvec1-&gt;at(0).c_str(), &quot;Test1&quot;, MB_OK); //Geht
	MessageBox(NULL, strvec2-&gt;at(0).c_str(), &quot;Test2&quot;, MB_OK); //Geht
	MessageBox(NULL, strvec3. at(0).c_str(), &quot;Test3&quot;, MB_OK); //Geht nicht weil Inhalt nur in Funktion präsent
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2371671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371671</guid><dc:creator><![CDATA[secondsun]]></dc:creator><pubDate>Fri, 13 Dec 2013 16:04:12 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Fri, 13 Dec 2013 16:17:13 GMT]]></title><description><![CDATA[<p>Pointer nur, wenn es irgendeinen Grund geben könnte, dass dieser Null ist. Was so gut wie nie der Fall sein wird. Daher: Referenz, außer es gibt einen sehr guten Grund dagegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371674</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 13 Dec 2013 16:17:13 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Fri, 13 Dec 2013 16:20:49 GMT]]></title><description><![CDATA[<p>Call by value, wenn du in der Funktion sowieso eine Kopie des übergebenen Objekts gemacht hättest und das Original nicht verändern willst.<br />
Call by pointer, wenn der Parameter optional ist (statt einen Zeiger auf ein Objekt kannst du auch nullptr übergeben).<br />
Call by reference andernfalls.</p>
<p>Bonus: Bei Ausgabeparametern bevorzugen manche Leute call by pointer, auch wenn der Parameter nicht optional ist.<br />
Grund ist, dass es nicht immer offensichtlich ist, dass ein Aufruf wie foo(a,b,c) einige der übergebenen Objekte verändert.<br />
Bei foo(&amp;a,&amp;b,&amp;c) rechnet man schon eher damit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371675</guid><dc:creator><![CDATA[;Han]]></dc:creator><pubDate>Fri, 13 Dec 2013 16:20:49 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Fri, 13 Dec 2013 16:41:32 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Pointer nur, wenn es irgendeinen Grund geben könnte, dass dieser Null ist. Was so gut wie nie der Fall sein wird.<br />
...</p>
</blockquote>
<p>Aha...<br />
Woher nimmst du diese Erkenntnis?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371678</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Fri, 13 Dec 2013 16:41:32 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Fri, 13 Dec 2013 16:51:12 GMT]]></title><description><![CDATA[<p>DocShoe schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Pointer nur, wenn es irgendeinen Grund geben könnte, dass dieser Null ist. Was so gut wie nie der Fall sein wird.<br />
...</p>
</blockquote>
<p>Aha...<br />
Woher nimmst du diese Erkenntnis?</p>
</blockquote>
<p>Eigene Erfahrung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371679</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 13 Dec 2013 16:51:12 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Fri, 13 Dec 2013 16:54:20 GMT]]></title><description><![CDATA[<p>DocShoe schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Pointer nur, wenn es irgendeinen Grund geben könnte, dass dieser Null ist. Was so gut wie nie der Fall sein wird.<br />
...</p>
</blockquote>
<p>Aha...<br />
Woher nimmst du diese Erkenntnis?</p>
</blockquote>
<p>ich sehe das auch gleich wie SeppJ.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371681</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Fri, 13 Dec 2013 16:54:20 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Fri, 13 Dec 2013 17:16:59 GMT]]></title><description><![CDATA[<p>;Han schrieb:</p>
<blockquote>
<p>Bonus: Bei Ausgabeparametern bevorzugen manche Leute call by pointer, auch wenn der Parameter nicht optional ist.<br />
Grund ist, dass es nicht immer offensichtlich ist, dass ein Aufruf wie foo(a,b,c) einige der übergebenen Objekte verändert.<br />
Bei foo(&amp;a,&amp;b,&amp;c) rechnet man schon eher damit.</p>
</blockquote>
<p>Schonmal von C++11 gehört? Wenn man das wirklich anzeigen will, dann bitte richtig:</p>
<pre><code class="language-cpp">foo(std::ref(a),std::ref(b),std::ref(c));
</code></pre>
<p>;Han schrieb:</p>
<blockquote>
<p>Call by pointer, wenn der Parameter optional ist (statt einen Zeiger auf ein Objekt kannst du auch nullptr übergeben).</p>
</blockquote>
<p>null considered harmful. Nullpointer lassen sich durch ein Null-State beheben. Nullstring -&gt; &quot;&quot;. Nullvector -&gt; std::vector&lt;int&gt;(). Null übergeben zu dürfen impliziert, dass irgendwo auf NULL abgefragt werden muss, und das ist langsam und umständlich und verwirrend. Wenn sich eine Funktion anders verhalten sollte, abhängig davon ob der eine Parameter gegeben oder nicht gegeben ist, dann sind das in Wirklichkeit zwei Funktionen.</p>
<p>Siehe <a href="http://www.boost.org/libs/optional/doc/html/index.html" rel="nofollow">Boost.Optional</a>. Von den 4 Beispielen handelt <em>keines</em> von optionalen Parametern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371685</guid><dc:creator><![CDATA[reffreffreff]]></dc:creator><pubDate>Fri, 13 Dec 2013 17:16:59 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Fri, 13 Dec 2013 18:00:08 GMT]]></title><description><![CDATA[<p>reffreffreff schrieb:</p>
<blockquote>
<p>Schonmal von C++11 gehört? Wenn man das wirklich anzeigen will, dann bitte richtig:</p>
<pre><code class="language-cpp">foo(std::ref(a),std::ref(b),std::ref(c));
</code></pre>
</blockquote>
<p>Nö, std::ref war mir nur im Zusammenhang mit bind und ähnlichem bekannt, aber das ist ein schönes Einsatzgebiet.</p>
<p>reffreffreff schrieb:</p>
<blockquote>
<p>Nullpointer lassen sich durch ein Null-State beheben. Nullstring -&gt; &quot;&quot;. Nullvector -&gt; std::vector&lt;int&gt;().</p>
</blockquote>
<p>Ich sorge zwar ausnahmslos dafür, dass meine Klassen, die im weitesten Sinne einen Satz von Daten repräsentieren, einen Nullstate haben (inklusive <code>explicit operator bool()</code> , welcher auf diesen testet), hätte aber nicht erwartet, dass sowas Praxis ist.</p>
<p>reffreffreff schrieb:</p>
<blockquote>
<p>Wenn sich eine Funktion anders verhalten sollte, abhängig davon ob der eine Parameter gegeben oder nicht gegeben ist, dann sind das in Wirklichkeit zwei Funktionen.</p>
</blockquote>
<p>Da magst du wohl Recht haben. Das passiert bei mir zwar ohnehin nur alle tausend Funktionen einmal, aber beim nächsten Mal werde ich das unter diesem Gesichtspunkt nochmal kritisch beurteilen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371693</guid><dc:creator><![CDATA[;Han]]></dc:creator><pubDate>Fri, 13 Dec 2013 18:00:08 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Fri, 13 Dec 2013 18:39:27 GMT]]></title><description><![CDATA[<p>reffreffreff schrieb:</p>
<blockquote>
<p>Schonmal von C++11 gehört? Wenn man das wirklich anzeigen will, dann bitte richtig:</p>
<pre><code class="language-cpp">foo(std::ref(a),std::ref(b),std::ref(c));
</code></pre>
</blockquote>
<p>Weisst du auch, was für einen Typ <code>std::ref()</code> zurückgibt? Tipp: Es ist keine Referenz.</p>
<p>reffreffreff schrieb:</p>
<blockquote>
<p>Null übergeben zu dürfen impliziert, dass irgendwo auf NULL abgefragt werden muss, und das ist langsam und umständlich und verwirrend. Wenn sich eine Funktion anders verhalten sollte, abhängig davon ob der eine Parameter gegeben oder nicht gegeben ist, dann sind das in Wirklichkeit zwei Funktionen.</p>
</blockquote>
<p>Beispiel: Ein Raumschiff kann ein Ziel anvisiert haben oder nicht, <code>set/getTarget()</code> operieren mit Zeigern, die möglicherweise Null sind. Naheliegendste Version:</p>
<pre><code>ship.setTarget(otherShip.getTarget());
</code></pre>
<p>Dogmatische Version mit &quot;in Wirklichkeit zwei Funktionen&quot;:</p>
<pre><code>if (otherShip.hasTarget())
    ship.setTarget(otherShip.getTarget());
else
    ship.resetTarget();
</code></pre>
<p>Resultat: 400% Code (+2 zusätzliche Memberfunktionen), braucht viel länger bis die Semantik &quot;weise meinem Schiff das Ziel des anderen Schiffs zu&quot; verstanden ist, ausserdem eine unnötige und langsame Fallunterscheidung. Deine Vorgehensweise kann recht nach hinten losgehen.</p>
<p>;Han schrieb:</p>
<blockquote>
<p>Ich sorge zwar ausnahmslos dafür, dass meine Klassen, die im weitesten Sinne einen Satz von Daten repräsentieren, [...], hätte aber nicht erwartet, dass sowas Praxis ist.</p>
</blockquote>
<p>Ist es auch nicht. Denn das verschiebt das Problem nur: Statt den Zeiger auf Gültigkeit zu testen, testest du das Objekt auf Gültigkeit. Gut, in manchen Fällen wie leeren Containern klappt das implizit, weil die Iterations-Schleife einfach nichts tut. Diese Fälle würde ich aber nicht speziell als &quot;Null-State&quot; bezeichnen.</p>
<p>In anderen Fällen kannst du den Code durch in Klassen eingebaute Null-States jedoch verschlimmern. Du verletzt damit das Prinzip von Invarianten und musst Objekte vor ihrer Verwendung auf Gültigkeit prüfen. Daher lieber ein <code>boost::optional</code> ( <code>std::optional</code> kommt ja leider nicht für C++14) drum herum packen, um die Optionalität explizit kennzuzeichnen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371703</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 13 Dec 2013 18:39:27 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Fri, 13 Dec 2013 20:07:21 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>reffreffreff schrieb:</p>
<blockquote>
<p>Schonmal von C++11 gehört? Wenn man das wirklich anzeigen will, dann bitte richtig:</p>
<pre><code class="language-cpp">foo(std::ref(a),std::ref(b),std::ref(c));
</code></pre>
</blockquote>
<p>Weisst du auch, was für einen Typ <code>std::ref()</code> zurückgibt? Tipp: Es ist keine Referenz.</p>
</blockquote>
<p>Es ging genau darum, die unsicheren (potentiell nullen) Pointer durch die sichereren Reference-Wrapper zu ersetzen.</p>
<blockquote>
<p>Beispiel: Ein Raumschiff kann ein Ziel anvisiert haben oder nicht, <code>set/getTarget()</code> operieren mit Zeigern, die möglicherweise Null sind. Naheliegendste Version</p>
</blockquote>
<p>Damit ist der Fall doch klar:</p>
<pre><code class="language-cpp">class target {
  ship *target;
public:
  target(ship&amp; other_ship) : target(&amp;other_ship) {}
  target() : target(0) {}

  operator bool() const { return target &amp;&amp; !target-&gt;stealthed(); }
  ship&amp; get() { assert(valid()); return *target; }
};

ship.target() = otherShip.target();
</code></pre>
<p>Resultat: 50% kürzerer Code (+ 1 Memberfunktion weniger). Dazu sicherer und flexibler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371720</guid><dc:creator><![CDATA[reffreffreff]]></dc:creator><pubDate>Fri, 13 Dec 2013 20:07:21 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Fri, 13 Dec 2013 20:14:05 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>;Han schrieb:</p>
<blockquote>
<p>Ich sorge zwar ausnahmslos dafür, dass meine Klassen, die im weitesten Sinne einen Satz von Daten repräsentieren, [...], hätte aber nicht erwartet, dass sowas Praxis ist.</p>
</blockquote>
<p>Ist es auch nicht. Denn das verschiebt das Problem nur: Statt den Zeiger auf Gültigkeit zu testen, testest du das Objekt auf Gültigkeit. Gut, in manchen Fällen wie leeren Containern klappt das implizit, weil die Iterations-Schleife einfach nichts tut. Diese Fälle würde ich aber nicht speziell als &quot;Null-State&quot; bezeichnen.</p>
</blockquote>
<p>Ich verstehe Null-State als State, der zwar valide ist, aber nichts tut (ist manchmal nicht zu vermeiden -- siehe dein Target-Beispiel).</p>
<blockquote>
<p>In anderen Fällen kannst du den Code durch in Klassen eingebaute Null-States jedoch verschlimmern. Du verletzt damit das Prinzip von Invarianten und musst Objekte vor ihrer Verwendung auf Gültigkeit prüfen. Daher lieber ein <code>boost::optional</code> ( <code>std::optional</code> kommt ja leider nicht für C++14) drum herum packen, um die Optionalität explizit kennzuzeichnen.</p>
</blockquote>
<p>Das ist für mich kein guter Null-State mehr. Der Punkt ist, dass es Null-States quasi sowieso braucht, wenn man den Move-Konstruktor definiert. Und ungültige Zustände sollte man eh nur haben, wenn das so im Design gewünscht ist (dein Target). Null-State kann auch kostspielig sein, siehe std::list, deren Null-State dynamischen Speicher besitzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371723</guid><dc:creator><![CDATA[reffreffreff]]></dc:creator><pubDate>Fri, 13 Dec 2013 20:14:05 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Fri, 13 Dec 2013 20:33:05 GMT]]></title><description><![CDATA[<p>reffreffreff schrieb:</p>
<blockquote>
<p>Es ging genau darum, die unsicheren (potentiell nullen) Pointer durch die sichereren Reference-Wrapper zu ersetzen.</p>
</blockquote>
<p>Ich glaube, du hast Reference-Wrapper falsch verstanden: Sie sind keine Referenzen, und niemand verwendet sie als Parametertyp. Sie existieren, um Referenzen zu <strong>binden</strong>, weil man in einem Kontext wie <code>std::bind()</code> keine andere Möglichkeit hat, eine Referenz zu übergeben. <code>std::reference_wrapper</code> ist nicht zur direkten Übergabe konzipiert.</p>
<p>reffreffreff schrieb:</p>
<blockquote>
<pre><code>ship.target() = otherShip.target();
</code></pre>
<p>Resultat: 50% kürzerer Code (+ 1 Memberfunktion weniger). Dazu sicherer und flexibler.</p>
</blockquote>
<p>Was gibt <code>target()</code> zurück? Eine Referenz? Damit verlierst du die Kapselung. Der Code ist übrigens gleich lang (je 1 Zeile).</p>
<p>Ausserdem ist eine eigene Klasse für Ziele Overkill. Wenn du andere Verweise hast, willst du jeweils eigene Klassen erstellen? Für Eskorten, Leader, und alle möglichen Beziehungen zwischen Raumschiffen? Ne, die Zeiger-Lösung funktioniert und ist einfach.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371725</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371725</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 13 Dec 2013 20:33:05 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Sat, 14 Dec 2013 19:02:00 GMT]]></title><description><![CDATA[<p>Ich sehe zwar prinzipiell worauf du hinaus willst Nexus, und sehe es nicht als unplausibel, aber warum nicht</p>
<pre><code>ship.UseTargetFrom(otherShip)
</code></pre>
<p>?<br />
Ist diese Funktion was triviales with target=othership.target; dürfte das auch keinerlei Laufzeitunterschiede haben.</p>
<p>Meiner Meinung nach wird dadurch nicht nur klarer was man eigentlich will, man kann eben auch unterschiedliches Verhalten beim übernehmen eines Ziels und beim setzen eines Ziels einführen. Ich weiß von Freespace 2, dass die &quot;Ziel des Ziels übernehmen&quot; Funktion sowas nicht gemacht hat, was zu dem ungewollten Verhalten geführt hat, Dinge ins Ziel nehmen zu können die man eigentlich nicht ins Ziel nehmen können sollte - indem man einfach die KI-Schiffe genutzt hat (bei denen ist es gewissermaßen notwendig, dass sie sich noch immer ein Ziel wählen können)</p>
<p>Solche Get/Set Konstrukte sind mir aber unabhängig davon nie ganz geheuer...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371838</guid><dc:creator><![CDATA[kleiner Troll]]></dc:creator><pubDate>Sat, 14 Dec 2013 19:02:00 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Sat, 14 Dec 2013 19:17:17 GMT]]></title><description><![CDATA[<p>Ich arbeite generell nur mit Pointern, das habe ich noch aus den C-Zeiten. Ich bin es einfach über die Jahre gewöhnt und habe auch noch nie Probleme damit. Mein C++ ist eher ein C mit Klassen und das wird sich wohl auch nicht mehr ändern, da es einfach für mich gut so funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371839</guid><dc:creator><![CDATA[Zeigmal]]></dc:creator><pubDate>Sat, 14 Dec 2013 19:17:17 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Sat, 14 Dec 2013 19:31:15 GMT]]></title><description><![CDATA[<p>Zeigmal schrieb:</p>
<blockquote>
<p>IIch bin es einfach über die Jahre gewöhnt und habe auch noch nie Probleme damit. Mein C++ ist eher ein C mit Klassen und das wird sich wohl auch nicht mehr ändern, da es einfach für mich gut so funktioniert.</p>
</blockquote>
<p>Gleich kommt der Shitstorm.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371842</guid><dc:creator><![CDATA[Marthog]]></dc:creator><pubDate>Sat, 14 Dec 2013 19:31:15 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Sat, 14 Dec 2013 20:26:25 GMT]]></title><description><![CDATA[<p>Jetzt werden sie mich wieder hauen...</p>
<p>Pointer wenn ich den ganzen OOP-kram umgehen und auf ein Objekt direkt zugreifen will.<br />
Ich weiss, daß das mies im Sinne der anständigen Programmierung ist. Ich mach's trotzdem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371860</guid><dc:creator><![CDATA[EOP]]></dc:creator><pubDate>Sat, 14 Dec 2013 20:26:25 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Sat, 14 Dec 2013 20:30:44 GMT]]></title><description><![CDATA[<p>Kann doch jeder programmieren wie er will. Die einen machen sich halt hundert Gedanken vorher und halten jede Regel ein, versuchen dazu immer ein DP mit rein zu quetschen und den denken dann noch nach wie sie den Code zu Tode generalisieren könnten und die anderen sind in der Zeit schon fast fertig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371861</guid><dc:creator><![CDATA[1312]]></dc:creator><pubDate>Sat, 14 Dec 2013 20:30:44 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Sat, 14 Dec 2013 23:36:10 GMT]]></title><description><![CDATA[<p>1312 schrieb:</p>
<blockquote>
<p>Kann doch jeder programmieren wie er will. Die einen machen sich halt hundert Gedanken vorher und halten jede Regel ein, versuchen dazu immer ein DP mit rein zu quetschen und den denken dann noch nach wie sie den Code zu Tode generalisieren könnten und die anderen sind in der Zeit schon fast fertig.</p>
</blockquote>
<p>DP - ist das das? <a href="http://de.wikipedia.org/wiki/Doppelpenetration" rel="nofollow">http://de.wikipedia.org/wiki/Doppelpenetration</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371891</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371891</guid><dc:creator><![CDATA[EOP]]></dc:creator><pubDate>Sat, 14 Dec 2013 23:36:10 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Sun, 15 Dec 2013 17:21:29 GMT]]></title><description><![CDATA[<p>Ich denke er meint Design Patterns.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372016</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 15 Dec 2013 17:21:29 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Mon, 16 Dec 2013 09:14:40 GMT]]></title><description><![CDATA[<p>1312 schrieb:</p>
<blockquote>
<p>Kann doch jeder programmieren wie er will. Die einen machen sich halt hundert Gedanken vorher und halten jede Regel ein, versuchen dazu immer ein DP mit rein zu quetschen und den denken dann noch nach wie sie den Code zu Tode generalisieren könnten und die anderen sind in der Zeit schon fast fertig.</p>
</blockquote>
<p>In professioneller Umgebung schreibt man Code nicht fuer sich allein. Dort kann nicht jeder programmieren wie er will.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372112</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Mon, 16 Dec 2013 09:14:40 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Mon, 16 Dec 2013 09:21:55 GMT]]></title><description><![CDATA[<p>1312 schrieb:</p>
<blockquote>
<p>Kann doch jeder programmieren wie er will. Die einen machen sich halt hundert Gedanken vorher und halten jede Regel ein, versuchen dazu immer ein DP mit rein zu quetschen und den denken dann noch nach wie sie den Code zu Tode generalisieren könnten und die anderen sind in der Zeit schon fast fertig.</p>
</blockquote>
<p>Und während die einen Bugs innerhalb von Stunden fixen und neue Features innerhalb von einigen Tagen einbauen, blickt bei den anderen nach einem halben Jahr keiner mehr durch den Code durch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372114</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Mon, 16 Dec 2013 09:21:55 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Mon, 16 Dec 2013 09:58:54 GMT]]></title><description><![CDATA[<p>daddy_felix schrieb:</p>
<blockquote>
<p>Und während die einen Bugs innerhalb von Stunden fixen und neue Features innerhalb von einigen Tagen einbauen, blickt bei den anderen nach einem halben Jahr keiner mehr durch den Code durch.</p>
</blockquote>
<p>Und besonders schön ist, wenn man Code von Anderen übernehmen muss, und man vorgeworfen bekommt wie langsam man doch sei (Kryptischer Code, 5fach Zeiger, keine Kommentare und bei Fragen an den betreffenden Entwickler: &quot;Schau in den Code&quot;). Besonders schön ist auch wenn man Variablen undeutlich bezeichnet, und die von drei Codestellen unterschiedlich gesetzt werden (Dem Entwickler ist zwar bekannt das globale Variablen nur mit Bedacht eingesetzt werden sollen, sein Ersatz waren dann aber beispielsweise 50 public static Member in einer Sammelklasse...).</p>
<p>Grundsätzlich sollte man sich einen sauberen Code angewöhnen, auch wenn man dies unter Zeitdruck etc. nicht immer hin bekommt. Wenn man im Stil von &quot;1312&quot; programmiert kann man für sich im eigenen Kämmerchen entwickeln, aber man sollte die Finger von Projekten lassen bei denen mehr als eine Person arbeitet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372122</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 16 Dec 2013 09:58:54 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Mon, 16 Dec 2013 10:35:26 GMT]]></title><description><![CDATA[<p>Und wie genau übertragen sich die hier genannten Gruselszenarien auf die Frage, ob man Referenzen oder Zeiger verwenden sollte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372130</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Mon, 16 Dec 2013 10:35:26 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Wed, 18 Dec 2013 00:36:33 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Pointer nur, wenn es irgendeinen Grund geben könnte, dass dieser Null ist. Was so gut wie nie der Fall sein wird. Daher: Referenz, außer es gibt einen sehr guten Grund dagegen.</p>
</blockquote>
<p>Das ist die Sicht des Aufgerufenen.</p>
<p>Aus Sicht des Aufrufers<br />
&quot;Pointer, wenn ich erlaube, daß der Aufgerufene was ändert. Const-Ref oder Kopie, wenn ich es nicht erlaube.&quot; Ich sehe im Code des Aufrufers am &amp; immer sofort, daß da was heikel ist.</p>
<p>Beim Aufrufer mache ich Fehlerfreiheit. Der Aufgerufene ist schon fehlerfrei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372498</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 18 Dec 2013 00:36:33 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Wed, 18 Dec 2013 05:46:01 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>1312 schrieb:</p>
<blockquote>
<p>Kann doch jeder programmieren wie er will. Die einen machen sich halt hundert Gedanken vorher und halten jede Regel ein, versuchen dazu immer ein DP mit rein zu quetschen und den denken dann noch nach wie sie den Code zu Tode generalisieren könnten und die anderen sind in der Zeit schon fast fertig.</p>
</blockquote>
<p>In professioneller Umgebung schreibt man Code nicht fuer sich allein. Dort kann nicht jeder programmieren wie er will.</p>
</blockquote>
<p>Es gibt aber genug Leute die nicht im Team arbeiten, gerade bei C++. Wenn ich allein ein kleines Tool schreibe, dann fange ich nicht an mir gedanken über OOP oder const zu machen. Da wird einen kurze Skizze gemacht und das Ding in ein paar Tagen fertig gemacht. Aber meist landet man bei der Sprachenwahl eher nicht bei C++.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372506</guid><dc:creator><![CDATA[ChangeTheRange]]></dc:creator><pubDate>Wed, 18 Dec 2013 05:46:01 GMT</pubDate></item><item><title><![CDATA[Reply to Wann by Pointer und wann by Reference on Wed, 18 Dec 2013 16:29:03 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Aus Sicht des Aufrufers<br />
&quot;Pointer, wenn ich erlaube, daß der Aufgerufene was ändert. Const-Ref oder Kopie, wenn ich es nicht erlaube.&quot; Ich sehe im Code des Aufrufers am &amp; immer sofort, daß da was heikel ist.</p>
</blockquote>
<p>Ohne diese Technik mal angewendet zu haben, der positive Effekt des &amp;-Zeichens ist nur lokal. Wenn ich 10 Funktionen habe, die sich gegenseitig mit dem gleichen Argument aufrufen, dann habe ich einmal am Anfang die Dereferenzierung und ab dann werden immer Pointer rumgereicht. Aber was, wenn ich auch mitten im Chain wissen will, ob das Objekt verändert wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372675</guid><dc:creator><![CDATA[ausrufer]]></dc:creator><pubDate>Wed, 18 Dec 2013 16:29:03 GMT</pubDate></item></channel></rss>