<?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[Kopierkonstruktor]]></title><description><![CDATA[<p>Hallo!</p>
<p>Warum ist denn der Parameter eines Kopierkonstruktors konstant?</p>
<p>Ich kenne bisher nur konstante Methoden. Man deklariert ja Methoden konstant, wenn sie das Objekt nicht verändern, richtig??</p>
<p>Aber was hat das konstant im Parameter verloren? Ich kann ja auch ein nicht konstantes Objekt mit Hilfe des Copykonstruktors kopireen, oder?!?</p>
<p>Danke für die Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/303881/kopierkonstruktor</link><generator>RSS for Node</generator><lastBuildDate>Mon, 10 Aug 2026 05:37:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/303881.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 May 2012 13:53:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kopierkonstruktor on Thu, 24 May 2012 13:53:33 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Warum ist denn der Parameter eines Kopierkonstruktors konstant?</p>
<p>Ich kenne bisher nur konstante Methoden. Man deklariert ja Methoden konstant, wenn sie das Objekt nicht verändern, richtig??</p>
<p>Aber was hat das konstant im Parameter verloren? Ich kann ja auch ein nicht konstantes Objekt mit Hilfe des Copykonstruktors kopireen, oder?!?</p>
<p>Danke für die Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2214922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2214922</guid><dc:creator><![CDATA[foo33]]></dc:creator><pubDate>Thu, 24 May 2012 13:53:33 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor on Thu, 24 May 2012 13:57:40 GMT]]></title><description><![CDATA[<p>Du kannst zwar, wenn der Parameter konstant ist, auch ein nicht konstantes Objekt kopieren, aber Du möchtest ja auch im umgekehrten Fall ein konstantes Objekt kopieren können. Das geht aber nicht, wenn der Parameter nicht konstant ist.</p>
<p>Darüberhinaus zeigst Du damit dem Aufrufer an (und der Compiler prüft das), dass das Ursprungsobjekt nicht verändert wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2214926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2214926</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 24 May 2012 13:57:40 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor on Thu, 24 May 2012 13:58:24 GMT]]></title><description><![CDATA[<p>sagt nur aus, dass das übergebene Objekt nicht verändert wird.<br />
Natürlich kannst du auch nicht const Objekte übergeben.<br />
Umgekehrt ginge es hingegen nicht, also nicht const Parameter und Übergabe eines const Objekts.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2214927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2214927</guid><dc:creator><![CDATA[fdsffdfsd]]></dc:creator><pubDate>Thu, 24 May 2012 13:58:24 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor on Thu, 24 May 2012 14:00:23 GMT]]></title><description><![CDATA[<blockquote>
<p>Darüberhinaus zeigst Du damit dem Aufrufer an (und der Compiler prüft das), dass das Ursprungsobjekt nicht verändert wird.</p>
</blockquote>
<p>Das geht aber bei normalen Methoden doch in der ARt:</p>
<pre><code class="language-cpp">public void foo(int i) const
{
....
}
</code></pre>
<p>oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2214931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2214931</guid><dc:creator><![CDATA[foo33]]></dc:creator><pubDate>Thu, 24 May 2012 14:00:23 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor on Thu, 24 May 2012 14:00:50 GMT]]></title><description><![CDATA[<p>Um ein Objekt zu kopieren, musst du das Original in der Regel nicht verändern <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/2214932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2214932</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Thu, 24 May 2012 14:00:50 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor on Thu, 24 May 2012 14:21:19 GMT]]></title><description><![CDATA[<p>foo33 schrieb:</p>
<blockquote>
<blockquote>
<p>Darüberhinaus zeigst Du damit dem Aufrufer an (und der Compiler prüft das), dass das Ursprungsobjekt nicht verändert wird.</p>
</blockquote>
<p>Das geht aber bei normalen Methoden doch in der ARt:</p>
<pre><code class="language-cpp">public void foo(int i) const
{
....
}
</code></pre>
<p>oder?</p>
</blockquote>
<p>Nein. Dies zeigt an, dass das aufrufende Objekt sich nicht ändert. Wenn du jedoch</p>
<pre><code class="language-cpp">public void foo(int &amp;i) const
</code></pre>
<p>(also mit i als Referenz) hast, dann könnte man über i das Funktionsargument ändern und kann daher die Funktion nur mit nicht-konstanten Integern aufrufen. Mit</p>
<pre><code class="language-cpp">public void foo(const int &amp;i) const
</code></pre>
<p>hast du trotzdem eine Referenz, kannst diese aber auch mit einer Konstanten initialisieren.</p>
<p>Bei deinem Kopierkonstruktor machst du somit deutlich, dass du das kopierte Objekt nicht änderst. Das neue Objekt ändert sich selbstverständlich. Dies ist auch nicht zwingend vorgeschrieben, du kannst auch gerne das kopierte Objekt ändern indem du das referenzierte Objekt nicht-const machst. Dann kannst du eben keine konstanten Objekte kopieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2214942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2214942</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 24 May 2012 14:21:19 GMT</pubDate></item></channel></rss>