<?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[[operator=] bei const class member]]></title><description><![CDATA[<p>WIe geht man vor, wenn man einen Zuweisungsoperator fuer Klassen mit koanstanten Klassenattribute benoetigt.<br />
Hierbei wird meiner Meinung nach das &quot;const&quot; auch nicht gestört, da man eine Instanz mit einer anderen gleichsetzt, man also an der &quot;alten&quot; nicht mehr interessiert ist. V.a. wenn man die Klasse in st-constainer halten möchte ist das noetig <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /></p>
<pre><code class="language-cpp">class Klasse
{
public:
   Klasse(const int&amp; a) : const_a(a) {};
   Klasse(const Klasse&amp; rhs) : const_a(rhs.const_a) {};
   Klasse&amp; operator=(const Klasse&amp; rhs)
   {
      if(this!=&amp;rhs)
      {
         const_a = rhs.const_a; //geht ja nicht 
      }
      return *this;
   }

private:
   const int const_a;
};
int main(){
 Klasse a(1), b(2);
 a=b;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/208052/operator-bei-const-class-member</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 10:51:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/208052.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 14 Mar 2008 08:55:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [operator=] bei const class member on Fri, 14 Mar 2008 08:56:08 GMT]]></title><description><![CDATA[<p>WIe geht man vor, wenn man einen Zuweisungsoperator fuer Klassen mit koanstanten Klassenattribute benoetigt.<br />
Hierbei wird meiner Meinung nach das &quot;const&quot; auch nicht gestört, da man eine Instanz mit einer anderen gleichsetzt, man also an der &quot;alten&quot; nicht mehr interessiert ist. V.a. wenn man die Klasse in st-constainer halten möchte ist das noetig <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /></p>
<pre><code class="language-cpp">class Klasse
{
public:
   Klasse(const int&amp; a) : const_a(a) {};
   Klasse(const Klasse&amp; rhs) : const_a(rhs.const_a) {};
   Klasse&amp; operator=(const Klasse&amp; rhs)
   {
      if(this!=&amp;rhs)
      {
         const_a = rhs.const_a; //geht ja nicht 
      }
      return *this;
   }

private:
   const int const_a;
};
int main(){
 Klasse a(1), b(2);
 a=b;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1474111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474111</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Fri, 14 Mar 2008 08:56:08 GMT</pubDate></item><item><title><![CDATA[Reply to [operator=] bei const class member on Fri, 14 Mar 2008 08:57:21 GMT]]></title><description><![CDATA[<p>wenn sich der wert ändert, ist es nicht konstant.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474112</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 14 Mar 2008 08:57:21 GMT</pubDate></item><item><title><![CDATA[Reply to [operator=] bei const class member on Fri, 14 Mar 2008 09:00:21 GMT]]></title><description><![CDATA[<p>das hieße aber, dass man solche klassen nie in einen std::vector stecken koennte</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474114</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Fri, 14 Mar 2008 09:00:21 GMT</pubDate></item><item><title><![CDATA[Reply to [operator=] bei const class member on Fri, 14 Mar 2008 09:20:25 GMT]]></title><description><![CDATA[<blockquote>
<p>Hierbei wird meiner Meinung nach das &quot;const&quot; auch nicht gestört, da man eine Instanz mit einer anderen gleichsetzt, man also an der &quot;alten&quot; nicht mehr interessiert ist. V.a. wenn man die Klasse in st-constainer halten möchte ist das noetig <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /></p>
</blockquote>
<p>const bedeuted: du veränderst das Objekt nicht. Der operator= verändert es aber offensichtlich(gleichsetzen IST veränderung), also ist const &quot;gestört&quot;.</p>
<p>Warum brauchst du eigentlich const an der Stelle?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474124</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Fri, 14 Mar 2008 09:20:25 GMT</pubDate></item><item><title><![CDATA[Reply to [operator=] bei const class member on Fri, 14 Mar 2008 09:24:50 GMT]]></title><description><![CDATA[<p>das ist nur interessenhalber <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="😉"
    /><br />
und ich würde dir auch rechtgeben, wenn ich</p>
<pre><code class="language-cpp">const Klasse a(1);
const Klasse b(2);
a = b;
</code></pre>
<p>verwenden würde. Bzw. sehe ich das von zwei Seiten. Klar verändere ich const member, aber eigentlich moechte ich ja zwei Klassen &quot;gleich&quot; setzen und somit den kompletten Inhalt übernehmen. Also sowas wie den cpy-ctor aufrufen.<br />
Und gerade in Hinblick auf stl-container benötigt man eben den operator=, wenn man nicht auf Pointer ausweichen möchte</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474130</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Fri, 14 Mar 2008 09:24:50 GMT</pubDate></item><item><title><![CDATA[Reply to [operator=] bei const class member on Fri, 14 Mar 2008 10:11:47 GMT]]></title><description><![CDATA[<p>Wenn du zwei Objekte gleichsetzt, änderst du das eine Objekt und damit auch seine Klassenmember. Damit steht fest, dass diese geändert werden können und dass eine const-Deklaration dieser Member ein fehlerhaftes Design ist. Objekte gleichzusetzen ist eben nicht das selbe wie ein Objekt zu zerstören und es durch die Kopie des anderen zu ersetzen, der Unterschied ist, dass beim Gleichsetzen zwei Objekte teilnehmen (die &quot;Vorlage&quot; und das, was gleichgesetzt wird), während beim Zerstören und Kopieren drei Objekte beteiligt sind (das Zerstörte, die Vorlage und die Kopie). Das ist eine Frage der Objektidentitäten und der Objektlebesdauern. Mit beidem sollte man nicht leichtfertig Schindluder betreiben <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="😉"
    /><br />
Wenn wie in deinem Fall ein Member &quot;nur&quot; beim op= geändert wird, ist es eben kein konstanter Member mehr. Stattdessen haben alle Memberfunktionen außer dem op= der Klasse eine Invariante, nämlich dass das entsprechende Member durch die Methoden nicht geändert wird. Lass also das const bei dem member weg und dokumentiere das entsprechend.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474167</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 14 Mar 2008 10:11:47 GMT</pubDate></item><item><title><![CDATA[Reply to [operator=] bei const class member on Fri, 14 Mar 2008 10:22:24 GMT]]></title><description><![CDATA[<p>okay. wie gesagt, bisher habe ich sowas noch nicht benötigt, wollte aber wissen, ob und wie man sowas loest.<br />
danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474172</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Fri, 14 Mar 2008 10:22:24 GMT</pubDate></item></channel></rss>