<?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 als Argument bzw. return Typ]]></title><description><![CDATA[<p>Mh ich hab mal nä blöde Frage. Ich bin heut igrnedwie nämlich n bissel verwirrt und weiß nimmer ob ich des so ganz blicke.</p>
<p>Hier mal ein Beispiel:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int aendern1(const int &amp;a);
int aendern2(const int a);

int main()
{
    int temp=10;
    cout &lt;&lt; aendern1(temp) &lt;&lt; &quot;\n&quot;;
    cout &lt;&lt; aendern2(temp);

    return 0;
}

int aendern1(const int &amp;a)
{
    return a+3;
}

int aendern2(const int a)
{
    return a+3;
}
</code></pre>
<p>Bei diesem Beispiel ist es doch total egal ob a eine Referenz auf etwas ist oder nicht???<br />
Das würde mir doch höchstens was bringen wenn das eine Methode in einer Klasse wäre? In Methoden soll man doch am besten immer Referenzen benutzen, weil dann kein Kopierkonstruktor aufgerufen wird, und das Programm somit schneller läuft?<br />
Oder man nimmt Referenzen doch dazu, wenn man die Variable die man an eine Funktion übergibt innerhalb in der Funktion verändern möchte, also in dem Scope von der Funktion?<br />
Weil irgendwie seh ich in meinem Buch in letzter Zeit immer Code's in denen so viele Referenzen verwendet werden, obwohl ich der Meinung wäre man bräuchte die gar nicht. Aber vll. gibts noch n paar andere Gründe um Referenzen zu verwenden?<br />
Also ich verwende eine Referenz bei einer Funktion eigentlich nur wegen den gerade genannten Gründen.<br />
So und dann noch n großes Problem, eine Referenz als return Typ bringt einem doch nur das man dann z.B. das hier schreiben kann &quot;Funk(temp)=33&quot;<br />
bzw. in Methoden soll man doch als return Typ wieder Referenzen verwenden, sodass auch kein Kopierkonstruktor aufgerufen wird???<br />
Um das Programm halt wieder schneller zu machen? Oder ist das mit der Schnelligkeit eigentlich nur minimal, oder merkt man da schon was?<br />
So ich hoffe ihr wisst vll. noch n paar andere Gründe oder? Aber umso mehr ich über Referenzen nachdenken desto verwirrter werde ich im Kopf.<br />
Ich will das einfach mal bissel auffrischen, weil irgendwie denk ich gar nicht mehr so richtig nach wenn ich eine Referenz verwende, ich mach das so bisschen automatisch manchmal, aber wenn ich jetzt so drübernachdenken dann....äh.... und bei manchen Beispielen in meinem C++.... da wundere ich mich au n bisschen, warum die zu jedem sch*** eine Referenz verwenden!<br />
Ich hoffe ma das sich jemand den langen Text hier durchliest und mir alle meine Fragen beantwortet oder mich verbessert. Tipps, Anregungen, Erklärungen.... sine immer erwünscht!!</p>
<p>Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/180358/referenz-als-argument-bzw-return-typ</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 17:44:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/180358.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 01 May 2007 18:08:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Referenz als Argument bzw. return Typ on Tue, 01 May 2007 18:08:15 GMT]]></title><description><![CDATA[<p>Mh ich hab mal nä blöde Frage. Ich bin heut igrnedwie nämlich n bissel verwirrt und weiß nimmer ob ich des so ganz blicke.</p>
<p>Hier mal ein Beispiel:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int aendern1(const int &amp;a);
int aendern2(const int a);

int main()
{
    int temp=10;
    cout &lt;&lt; aendern1(temp) &lt;&lt; &quot;\n&quot;;
    cout &lt;&lt; aendern2(temp);

    return 0;
}

int aendern1(const int &amp;a)
{
    return a+3;
}

int aendern2(const int a)
{
    return a+3;
}
</code></pre>
<p>Bei diesem Beispiel ist es doch total egal ob a eine Referenz auf etwas ist oder nicht???<br />
Das würde mir doch höchstens was bringen wenn das eine Methode in einer Klasse wäre? In Methoden soll man doch am besten immer Referenzen benutzen, weil dann kein Kopierkonstruktor aufgerufen wird, und das Programm somit schneller läuft?<br />
Oder man nimmt Referenzen doch dazu, wenn man die Variable die man an eine Funktion übergibt innerhalb in der Funktion verändern möchte, also in dem Scope von der Funktion?<br />
Weil irgendwie seh ich in meinem Buch in letzter Zeit immer Code's in denen so viele Referenzen verwendet werden, obwohl ich der Meinung wäre man bräuchte die gar nicht. Aber vll. gibts noch n paar andere Gründe um Referenzen zu verwenden?<br />
Also ich verwende eine Referenz bei einer Funktion eigentlich nur wegen den gerade genannten Gründen.<br />
So und dann noch n großes Problem, eine Referenz als return Typ bringt einem doch nur das man dann z.B. das hier schreiben kann &quot;Funk(temp)=33&quot;<br />
bzw. in Methoden soll man doch als return Typ wieder Referenzen verwenden, sodass auch kein Kopierkonstruktor aufgerufen wird???<br />
Um das Programm halt wieder schneller zu machen? Oder ist das mit der Schnelligkeit eigentlich nur minimal, oder merkt man da schon was?<br />
So ich hoffe ihr wisst vll. noch n paar andere Gründe oder? Aber umso mehr ich über Referenzen nachdenken desto verwirrter werde ich im Kopf.<br />
Ich will das einfach mal bissel auffrischen, weil irgendwie denk ich gar nicht mehr so richtig nach wenn ich eine Referenz verwende, ich mach das so bisschen automatisch manchmal, aber wenn ich jetzt so drübernachdenken dann....äh.... und bei manchen Beispielen in meinem C++.... da wundere ich mich au n bisschen, warum die zu jedem sch*** eine Referenz verwenden!<br />
Ich hoffe ma das sich jemand den langen Text hier durchliest und mir alle meine Fragen beantwortet oder mich verbessert. Tipps, Anregungen, Erklärungen.... sine immer erwünscht!!</p>
<p>Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1277112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1277112</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Tue, 01 May 2007 18:08:15 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz als Argument bzw. return Typ on Tue, 01 May 2007 18:52:56 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Falls ich das noch richtig in Erinnerung habe:</p>
<p>Eine Referenz ist ein alias Name auf eine Variable, daraus ergiebt sich: änderst du den Wert der ref. änderst du automatisch auch den Wert der Variablen.<br />
D.h. wenn du</p>
<pre><code class="language-cpp">func(int a)
</code></pre>
<p>schreibst erstellst du eine Kopie der Variablen =&gt; schlechtes Laufzeitverhalten. [Edit] =&gt; bedenke: bei der Variable die du übergibst bleibt der Wert unverändert auch wenn du den Wert der Variablen änderst(in der Funktion natürlich)[/Edit]<br />
Wenn du hingegen</p>
<pre><code class="language-cpp">func(int &amp;a)
</code></pre>
<p>schreibst übergibst du die originale Variable(weil Referenz) =&gt; Besseres Laufzeitverhalten da keine Kopie erstellt werden muss, dass heißt aber automatisch auch dass du den Wert der Variablen veränderst(außerhalb der Funktion natürlich)</p>
<p>Hoffe das war das was du wolltest hab den Text nur überflogen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>mfg Digger182</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1277140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1277140</guid><dc:creator><![CDATA[Raxtor]]></dc:creator><pubDate>Tue, 01 May 2007 18:52:56 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz als Argument bzw. return Typ on Tue, 01 May 2007 19:06:16 GMT]]></title><description><![CDATA[<p>Stromberg schrieb:</p>
<blockquote>
<p>Bei diesem Beispiel ist es doch total egal ob a eine Referenz auf etwas ist oder nicht???</p>
</blockquote>
<p>Ja ist es. Da erstens a eh nicht geändert wird bzw geändert werden kann und zweitens das Performancemäßig kein Vorteil bei eingebauten Datentyp bringt.</p>
<p>Stromberg schrieb:</p>
<blockquote>
<p>Das würde mir doch höchstens was bringen wenn das eine Methode in einer Klasse wäre? In Methoden soll man doch am besten immer Referenzen benutzen, weil dann kein Kopierkonstruktor aufgerufen wird, und das Programm somit schneller läuft?</p>
</blockquote>
<p>Mit Methoden hat das rein gar nichts zu tun. Es geht generell um die Übergabe von Objekten. Bei &quot;größeren&quot; Klassen bringt das eine Menge, bei int,double.etc ist es schlicht überflüssig</p>
<p>Stromberg schrieb:</p>
<blockquote>
<p>Oder man nimmt Referenzen doch dazu, wenn man die Variable die man an eine Funktion übergibt innerhalb in der Funktion verändern möchte, also in dem Scope von der Funktion?</p>
</blockquote>
<p>Ja.</p>
<p>Stromberg schrieb:</p>
<blockquote>
<p>So und dann noch n großes Problem, eine Referenz als return Typ bringt einem doch nur das man dann z.B. das hier schreiben kann &quot;Funk(temp)=33&quot;</p>
</blockquote>
<p>Ja. Aber das sieht man selten. Referenzen werden eher von operatort - X Funktion zurückgeben. Bsp: op[] oder op&lt;&lt;/&gt;&gt;<br />
Bspweise um sowas zu ermöglichen:</p>
<pre><code class="language-cpp">objekt[4] = ...;
objekt &lt;&lt; ... &lt;&lt; ...;
</code></pre>
<p>Stromberg schrieb:</p>
<blockquote>
<p>in Methoden soll man doch als return Typ wieder Referenzen verwenden, sodass auch kein Kopierkonstruktor aufgerufen wird???</p>
</blockquote>
<p>Wieder das Wort Methoden -&gt; s.o. Das mit dem Copy-C'tor ist aber schon richtig <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>Stromberg schrieb:</p>
<blockquote>
<p>Oder ist das mit der Schnelligkeit eigentlich nur minimal, oder merkt man da schon was?</p>
</blockquote>
<p>Merken tut man schon viel. <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/1277152</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1277152</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 01 May 2007 19:06:16 GMT</pubDate></item></channel></rss>