<?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 StandardParameter]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich kann ja für eine Klasse z.B. im Konstruktor einen StandardParameter<br />
festlegen.</p>
<p>Ich dachte an etwas wie:</p>
<pre><code class="language-cpp">MyClass(MyClassB&amp; b = MyClassB());
</code></pre>
<p>Funktioniert das nur mit einem const?</p>
<p>Wie wird sowas übersetzt?</p>
<pre><code class="language-cpp">MyClassB&amp; b = MyClassB();
MyClass obj(b);
</code></pre>
<p>Wenn das wirklich im Konstruktor erzeugt würde, wäre meine Referenz<br />
(, die ich im Konstruktor zwischenspeicher) beim nächsten Aufruf einer Funktion ja schon kaputt..</p>
<p>Darf ich die Referenz denn zwischenspeichern?</p>
<p>Aber dann müßte es doch auch ohne const gehen...</p>
<p>Gruß,<br />
*Cpp-Anfänger*</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/178464/referenz-als-standardparameter</link><generator>RSS for Node</generator><lastBuildDate>Sun, 20 Sep 2026 23:57:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/178464.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 11 Apr 2007 13:23:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Referenz als StandardParameter on Wed, 11 Apr 2007 13:23:23 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich kann ja für eine Klasse z.B. im Konstruktor einen StandardParameter<br />
festlegen.</p>
<p>Ich dachte an etwas wie:</p>
<pre><code class="language-cpp">MyClass(MyClassB&amp; b = MyClassB());
</code></pre>
<p>Funktioniert das nur mit einem const?</p>
<p>Wie wird sowas übersetzt?</p>
<pre><code class="language-cpp">MyClassB&amp; b = MyClassB();
MyClass obj(b);
</code></pre>
<p>Wenn das wirklich im Konstruktor erzeugt würde, wäre meine Referenz<br />
(, die ich im Konstruktor zwischenspeicher) beim nächsten Aufruf einer Funktion ja schon kaputt..</p>
<p>Darf ich die Referenz denn zwischenspeichern?</p>
<p>Aber dann müßte es doch auch ohne const gehen...</p>
<p>Gruß,<br />
*Cpp-Anfänger*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263836</guid><dc:creator><![CDATA[*Cpp-Anfänger* (off)]]></dc:creator><pubDate>Wed, 11 Apr 2007 13:23:23 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz als StandardParameter on Wed, 11 Apr 2007 13:29:07 GMT]]></title><description><![CDATA[<p>Du brauchst eine zusätzliche Funktion, die eine statische Instanz erzeugt und eine Referenz darauf zurückgibt.</p>
<pre><code class="language-cpp">MyClassB&amp; helper_funtion()
{
    static MyClassB instance;
    return instance;
}

MyClass::MyClass(MyClassB = helper_function())
{
//...
}
</code></pre>
<p>Wenn das ein default-Parameter sein soll, würde ich aber darüber nachdenken, das Objekt const zu machen. Es ergibt nur selten Sinn, wenn mehrere Objekte auf dem gleichen default-Objekt herumpfuschen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263842</guid><dc:creator><![CDATA[viande]]></dc:creator><pubDate>Wed, 11 Apr 2007 13:29:07 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz als StandardParameter on Wed, 11 Apr 2007 13:37:09 GMT]]></title><description><![CDATA[<p>Hallo viande,</p>
<p>auf die Factory hätte ich auch selber kommen können...<br />
thx</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263850</guid><dc:creator><![CDATA[*Cpp-Anfänger* (off)]]></dc:creator><pubDate>Wed, 11 Apr 2007 13:37:09 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz als StandardParameter on Thu, 12 Apr 2007 06:58:53 GMT]]></title><description><![CDATA[<p>Also das ist ja mal ein schönes Beispiel für eine Endlosrekursion (auch in viande's Alternative) - der Default-Ctor bekommt ein Default-konstruiertes Objekt als Default-Parameter übergeben, um das anzulegen, muß er wieder sich selbst aufrufen etc. Selbst wenn der Compiler so etwas schlucken sollte -lass es lieber.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264340</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 12 Apr 2007 06:58:53 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz als StandardParameter on Thu, 12 Apr 2007 07:26:12 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Also das ist ja mal ein schönes Beispiel für eine Endlosrekursion (auch in viande's Alternative) - der Default-Ctor bekommt ein Default-konstruiertes Objekt als Default-Parameter übergeben, um das anzulegen, muß er wieder sich selbst aufrufen etc. Selbst wenn der Compiler so etwas schlucken sollte -lass es lieber.</p>
</blockquote>
<p>Nee, du musst ganz genau lesen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> Das eine ist MyClass und das andere ist MyClass<strong>B</strong>. Es ist eher ein gutes Beispiel für schlech gewählte Namen <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/1264356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264356</guid><dc:creator><![CDATA[viande]]></dc:creator><pubDate>Thu, 12 Apr 2007 07:26:12 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz als StandardParameter on Thu, 12 Apr 2007 07:32:16 GMT]]></title><description><![CDATA[<p>OK, du hast gewonnen <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>Und um noch etwas sinnvolles beitragen zu können: Wenn du eine Referenz übergeben willst, muß sie auf etwas sinnvolles zeigen - und nötig ist das auch nur, wenn du vorhast, etwas mit der übergebenen Variable zu machen. Ansonsten übergib den Parameter besser als Wert oder const-Referenz (damit würde auch der ursprüngliche Ansatz <code>MyClass::MyClass(Helper = Helper());</code> funktionieren).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264363</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 12 Apr 2007 07:32:16 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz als StandardParameter on Thu, 12 Apr 2007 11:12:51 GMT]]></title><description><![CDATA[<p>Ich glaube nicht dass man den Returnwert einer Funktion an ein T&amp; (ohne const) Parameter binden kann...</p>
<pre><code class="language-cpp">struct T {};

T t()
{
    return T();
}

void f(T&amp;)
{
}

int main()
{
    f(t());
}
</code></pre>
<p>Comeau schrieb:</p>
<blockquote>
<pre><code>&quot;ComeauTest.c&quot;, line 14: error: initial value of reference to non-const must be an lvalue
      f(t());
        ^
</code></pre>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1264518</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264518</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 12 Apr 2007 11:12:51 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz als StandardParameter on Fri, 13 Apr 2007 06:54:07 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Ich glaube nicht dass man den Returnwert einer Funktion an ein T&amp; (ohne const) Parameter binden kann...</p>
</blockquote>
<p>Doch, kannst du - aber nur, wenn die Funktion einen T**&amp;** zurückgibt (und zur Laufzeit mußt du noch sicherstellen, daß das übergebene Objekt das Ende der Funktion überlebt).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1265064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1265064</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 13 Apr 2007 06:54:07 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz als StandardParameter on Fri, 13 Apr 2007 12:21:36 GMT]]></title><description><![CDATA[<p>Oh Mann ja.<br />
Ich denke anhand des Beispieles war klar worum es mir ging...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1265271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1265271</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 13 Apr 2007 12:21:36 GMT</pubDate></item></channel></rss>