<?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[Parameterübergabe Konstruktor call-by-ref?]]></title><description><![CDATA[<p>Beispiel:</p>
<pre><code class="language-cpp">class dummy{

 int m_i;

 dummy(int i) : m_i(i){}
 dummy(int &amp;i) : m_i(i){}

};
</code></pre>
<p>wenn ich nun ein Objekt erzeuge, ist es ja egal ob ich den parameter (Konstruktor) call-by-ref oder call-by-val übergebe... oder? Vorteil wird halt an der performance liegen... oder gibt es vor/nachteile??</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/191006/parameterübergabe-konstruktor-call-by-ref</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 21:48:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/191006.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 29 Aug 2007 07:02:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Parameterübergabe Konstruktor call-by-ref? on Wed, 29 Aug 2007 07:02:06 GMT]]></title><description><![CDATA[<p>Beispiel:</p>
<pre><code class="language-cpp">class dummy{

 int m_i;

 dummy(int i) : m_i(i){}
 dummy(int &amp;i) : m_i(i){}

};
</code></pre>
<p>wenn ich nun ein Objekt erzeuge, ist es ja egal ob ich den parameter (Konstruktor) call-by-ref oder call-by-val übergebe... oder? Vorteil wird halt an der performance liegen... oder gibt es vor/nachteile??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354290</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Wed, 29 Aug 2007 07:02:06 GMT</pubDate></item><item><title><![CDATA[Reply to Parameterübergabe Konstruktor call-by-ref? on Wed, 29 Aug 2007 07:05:46 GMT]]></title><description><![CDATA[<p>schlechtes beispiel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354291</guid><dc:creator><![CDATA[manman]]></dc:creator><pubDate>Wed, 29 Aug 2007 07:05:46 GMT</pubDate></item><item><title><![CDATA[Reply to Parameterübergabe Konstruktor call-by-ref? on Wed, 29 Aug 2007 07:21:31 GMT]]></title><description><![CDATA[<p>Bei einem int ist es egal, wie du den Parameter übergibst, bei eigenen Typen nicht mehr - da sparst du dir durch die Referenz-Übergabe eine Kopier-Operation.</p>
<p>(übrigens solltest du const-Referenzen verwenden, wenn du nicht vorhast, das übergebene Argument zu manipulieren)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354298</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 29 Aug 2007 07:21:31 GMT</pubDate></item><item><title><![CDATA[Reply to Parameterübergabe Konstruktor call-by-ref? on Wed, 29 Aug 2007 07:23:32 GMT]]></title><description><![CDATA[<p>naja ok, aber da ich nur den zeiger eines objekt übergebe, wird es ja nich kopiert.. aber performancetechnische untschiede, ober ein Pointer kopiert oder per refernez übergibt wird es nich so grafvierend geben denke ich</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354299</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Wed, 29 Aug 2007 07:23:32 GMT</pubDate></item><item><title><![CDATA[Reply to Parameterübergabe Konstruktor call-by-ref? on Wed, 29 Aug 2007 07:27:45 GMT]]></title><description><![CDATA[<p>ob du nun einen const zeiger oder eine const referenz des zeigers übergibst, ist tatsächlich reichlich egal, da es wie bei int auf exakt das gleiche hinausläuft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354301</guid><dc:creator><![CDATA[ghorst]]></dc:creator><pubDate>Wed, 29 Aug 2007 07:27:45 GMT</pubDate></item><item><title><![CDATA[Reply to Parameterübergabe Konstruktor call-by-ref? on Wed, 29 Aug 2007 07:33:57 GMT]]></title><description><![CDATA[<p>Deine Frage ist ziemlich abstrakt... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Performance ist ein Thema. Ein anderes ist, dass Kopieren nicht unbedingt immer das ist was man möchte. Stell dir einfach vor du hast festgelegt, das die Objekte einer Klasse immer eine eindeutige ID besitzten, dann kopierst du zwar die Werte des Objekts bei der Parameterübergabe, hast aber ein Objekt mit einer anderen ID. Relativ doof wenn man ausgerechnet diese auswerten möchte.<br />
Ähnliche Probleme bekommt man auch wenn das übergebene Objekt Verweise auf andere Objekte enthält. In dem Fall muss der Kopierkonstruktor nicht unbedingt das Verhalten an den Tag legen, das an dieser Stelle gewünscht ist. (Soll nur das Objekt kopiert werden oder die gesamte Struktur, ...)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354304</guid><dc:creator><![CDATA[MathiasTemp]]></dc:creator><pubDate>Wed, 29 Aug 2007 07:33:57 GMT</pubDate></item><item><title><![CDATA[Reply to Parameterübergabe Konstruktor call-by-ref? on Wed, 29 Aug 2007 07:36:26 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>naja ok, aber da ich nur den zeiger eines objekt übergebe, wird es ja nich kopiert.. aber performancetechnische untschiede, ober ein Pointer kopiert oder per refernez übergibt wird es nich so grafvierend geben denke ich</p>
</blockquote>
<p>Der Unterschied zwischen &quot;Übergabe eines Zeigers&quot; und &quot;Übergabe einer Referenz&quot; hat auf der Performance-Seite keine Auswirkungen, der Unterschied zwischen Referenz und Kopie kann gravierend sein (bei einem int dauert Referenz anlegen annähernd genauso lange wie Wert kopieren, bei größeren Objekten (z.B. vector&lt;int&gt;) ist letzteres um Größenordnungen langsamer).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354305</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 29 Aug 2007 07:36:26 GMT</pubDate></item><item><title><![CDATA[Reply to Parameterübergabe Konstruktor call-by-ref? on Wed, 29 Aug 2007 15:20:14 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class Dummy{
public:
 Dummy(const int&amp; i) : m_i(i){}
 void setVal1(int &amp;i)       { m_i = i; }
 void setVal2(const int &amp;i) { m_i = i; }
private:
 int m_i;
};
</code></pre>
<p>wie CStoll schon sagt, solltest du const-referenzen benutzen, es sei denn du möchtest das objekt selbst verändern. andernfalls kann es zufolgendem problem kommen:</p>
<pre><code class="language-cpp">Dummy d;
d.setVal1(1); //&gt; compilerFehler, da &quot;1&quot; const ist, aber ein non-const erwartet wird
d.setVal2(1); //&gt; so geht es
</code></pre>
<p>EDIT: &quot;void int&quot; im Bsp war natürlich ein copy&amp;paste error, sorry</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354307</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Wed, 29 Aug 2007 15:20:14 GMT</pubDate></item><item><title><![CDATA[Reply to Parameterübergabe Konstruktor call-by-ref? on Wed, 29 Aug 2007 14:54:45 GMT]]></title><description><![CDATA[<p>Was ist void int denn für ein Rckgabewert? oO</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354668</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Wed, 29 Aug 2007 14:54:45 GMT</pubDate></item><item><title><![CDATA[Reply to Parameterübergabe Konstruktor call-by-ref? on Wed, 29 Aug 2007 15:04:54 GMT]]></title><description><![CDATA[<p>Das ist ein int den man ignorieren kann. Das ist wohl ein Vorschlag für TR3.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354679</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 29 Aug 2007 15:04:54 GMT</pubDate></item></channel></rss>