<?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[Warum keine Vererbung von operator=]]></title><description><![CDATA[<p>Kurze Frage:</p>
<p>Warum wird operator= nicht vererbt, dagegen die anderen Operatoren (wobei ich insbesondere die &quot;Varianten des Zuweisungsoperators&quot; wie operator+= usw. damit meine) schon?</p>
<p>Ich habe die Forumssuche benutzt, aber in den ersten 50 Suchergebnissen nichts gefunden.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/193972/warum-keine-vererbung-von-operator</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 14:54:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/193972.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 02 Oct 2007 12:34:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Tue, 02 Oct 2007 12:34:02 GMT]]></title><description><![CDATA[<p>Kurze Frage:</p>
<p>Warum wird operator= nicht vererbt, dagegen die anderen Operatoren (wobei ich insbesondere die &quot;Varianten des Zuweisungsoperators&quot; wie operator+= usw. damit meine) schon?</p>
<p>Ich habe die Forumssuche benutzt, aber in den ersten 50 Suchergebnissen nichts gefunden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1376518</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1376518</guid><dc:creator><![CDATA[wolfgke]]></dc:creator><pubDate>Tue, 02 Oct 2007 12:34:02 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Tue, 02 Oct 2007 12:38:27 GMT]]></title><description><![CDATA[<p>Der operator= wird deshalb nicht vererbt, weil der Compiler selbst einen erzeugt (der elementweise kopiert), und von diesem aus die der Basisklasse aufruft.</p>
<p>Was passiert <strong>wenn</strong> er vererbt würde, kann man sich anhand dieses Szenarios ausmalen - es würden nur Basisklassenanteile kopiert, es würden Redundanzen entstehen usw.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1376520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1376520</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 02 Oct 2007 12:38:27 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Tue, 02 Oct 2007 13:31:00 GMT]]></title><description><![CDATA[<p>Der operator= wird vererbt wie jede andere normale Memberfunktion.<br />
Allerdings deklariert jede Klasse ihren eigenen Zuweisungsoperator, entweder macht es der Benutzer explizit oder der Compiler deklariert ihn implizit. In jedem Falle führt es dazu, dass alle geerbten Zuweisungsoperatoren verdeckt werden - was gut und wichtig ist. Mithin kann diese Verdeckung auch mit den üblichen Mitteln umgangen werden: durch Verwendung einer qualifizierten ID beim Aufruf oder einer using-Deklaration in der Klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1376535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1376535</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 02 Oct 2007 13:31:00 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Tue, 02 Oct 2007 14:10:00 GMT]]></title><description><![CDATA[<p>OK, danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1376605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1376605</guid><dc:creator><![CDATA[wolfgke]]></dc:creator><pubDate>Tue, 02 Oct 2007 14:10:00 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Sat, 06 Oct 2007 21:10:33 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>nicht zu vergessen, dass der (Standard-)operator=() der Kindklasse eine andere Signatur hat als der der Elternklasse:</p>
<pre><code class="language-cpp">struct A {
   A&amp; operator=(A const&amp;); 
};

struct B : public A {
   B&amp; operator=(B const&amp;); 
};
</code></pre>
<p>... damit würde der A::operator=() sowieso nur überladen (man hätte also 2: denmit Parameter &quot;A const&amp;&quot; und den mit Parameter &quot;B const&amp;&quot;) und nicht &quot;geerbt&quot;.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379434</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sat, 06 Oct 2007 21:10:33 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Sat, 06 Oct 2007 21:21:11 GMT]]></title><description><![CDATA[<p>Wenn du noch erklärst, was du hier unter Erben verstehst, kann man mit dem Beitrag vielleicht etwas anfangen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379442</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 06 Oct 2007 21:21:11 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Sat, 06 Oct 2007 21:28:22 GMT]]></title><description><![CDATA[<p>Hat vllt. jmd. Links, in denen beschrieben wird, wie die Veerbung funktioniert? Ich habe schon das von volkard gelesen, aber ich glaube dmait nicht klarzukommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379446</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379446</guid><dc:creator><![CDATA[Fake oder Echt]]></dc:creator><pubDate>Sat, 06 Oct 2007 21:28:22 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Sat, 06 Oct 2007 22:13:26 GMT]]></title><description><![CDATA[<p><a href="http://www.cpp-tutor.de/cpp/le14/le14_01.htm" rel="nofollow">cpp-tutor/Abgeleitete Klassen</a><br />
Kannst ja mal gucken, ob du damit klar kommst.</p>
<p>Gruß<br />
Don06</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379467</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Sat, 06 Oct 2007 22:13:26 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Sat, 06 Oct 2007 22:27:46 GMT]]></title><description><![CDATA[<p>Danke, ich werde mich damit morgen beschäftigen <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="🙂"
    /><br />
Ich melde mich notfalls.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379471</guid><dc:creator><![CDATA[Fake oder Echt]]></dc:creator><pubDate>Sat, 06 Oct 2007 22:27:46 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Sat, 06 Oct 2007 23:05:16 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Wenn du noch erklärst, was du hier unter Erben verstehst, kann man mit dem Beitrag vielleicht etwas anfangen.</p>
</blockquote>
<p>Entstammt der Ausgangsfrage:</p>
<p>wolfgke schrieb:</p>
<blockquote>
<p>...Warum wird operator= nicht vererbt, ...?...</p>
</blockquote>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379484</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sat, 06 Oct 2007 23:05:16 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Sun, 07 Oct 2007 04:30:19 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Hi,</p>
<p>nicht zu vergessen, dass der (Standard-)operator=() der Kindklasse eine andere Signatur hat als der der Elternklasse:</p>
<pre><code class="language-cpp">struct A {
   A&amp; operator=(A const&amp;); 
};

struct B : public A {
   B&amp; operator=(B const&amp;); 
};
</code></pre>
<p>... damit würde der A::operator=() sowieso nur überladen (man hätte also 2: denmit Parameter &quot;A const&amp;&quot; und den mit Parameter &quot;B const&amp;&quot;) und nicht &quot;geerbt&quot;.</p>
<p>Gruß,</p>
<p>Simon2.</p>
</blockquote>
<p>Geerbte Funktionen kann man nicht überladen. Die neue Funktion namens &quot;operator =&quot; (die Signatur spielt hier keine Rolle bloss der Name) verdeckt die alte (&quot;geerbte&quot;) Funktion namens &quot;operator =&quot;.</p>
<pre><code class="language-cpp">class base
{
public:
	void arrr() {}
	base&amp; operator =(base const&amp; b) { return *this; }
};

class derived : public base
{
public:
	void arrr(int) {};
	derived&amp; operator =(derived const&amp; d) { return *this; }
};

int main() 
{
	derived d;

//	d.arrr(); // fehler, arrr() ist von arrr(int) verdeckt
	d.arrr(1); // OK
//	d = base(); // fehler, operator =(base const&amp; b) wird von operator =(derived const&amp; d) verdeckt
	d = derived(); // OK

	// explizit
	d.base::arrr(); // OK
	d.base::operator = (base()); // OK
}
</code></pre>
<p>Ob in &quot;base&quot; oder &quot;derived&quot; hier ein &quot;operator =&quot; vom User definiert wird oder nicht ist dabei vollkommen egal, das Verhalten bezüglich der Zuweisung &quot;d = base();&quot; ändert sich dadurch nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379512</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 07 Oct 2007 04:30:19 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Sun, 07 Oct 2007 19:02:48 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>...<br />
Geerbte Funktionen kann man nicht überladen...</p>
</blockquote>
<p>Weiß ich, deswegen:</p>
<p>Simon2 schrieb:</p>
<blockquote>
<p>...würde ... hätte...</p>
</blockquote>
<p>Wollte nur auf die unterschiedliche Signatur hinweisen, die auch dann den gewünschten Effekt verhinderte (Konjunktiv), wenn nicht gelten würde, was camper bereits schrieb:</p>
<p>camper schrieb:</p>
<blockquote>
<p>...In jedem Falle führt es dazu, dass alle geerbten Zuweisungsoperatoren verdeckt werden ...</p>
</blockquote>
<p>... und gleichzeitig hast Du mit o.g. Aussage (absolut gesehen) auch noch Unrecht, weil:</p>
<p>camper schrieb:</p>
<blockquote>
<p>...Mithin kann diese Verdeckung auch mit den üblichen Mitteln umgangen werden: durch Verwendung einer qualifizierten ID beim Aufruf oder einer using-Deklaration in der Klasse.</p>
</blockquote>
<p><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="😉"
    /> <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>Bleiben wir einfach dabei: Es gibt 2 voneinander unabhängige Mechanismen, die die gewünschte &quot;Vererbung&quot; unmöglich machen:<br />
- Verdeckung und<br />
- falsche Signatur.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1380015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1380015</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sun, 07 Oct 2007 19:02:48 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Sun, 07 Oct 2007 21:41:08 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>... und gleichzeitig hast Du mit o.g. Aussage (absolut gesehen) auch noch Unrecht, weil:</p>
<p>camper schrieb:</p>
<blockquote>
<p>...Mithin kann diese Verdeckung auch mit den üblichen Mitteln umgangen werden: durch Verwendung einer qualifizierten ID beim Aufruf oder einer using-Deklaration in der Klasse.</p>
</blockquote>
<p><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="😉"
    /> <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>
</blockquote>
<p>Eine Erklärung anstelle nichtssagender Smileys würde deiner Argumentation allerdings mehr Gewicht verleihen.<br />
Der Standard ist nicht besonders klar hinsichtlich des Begriffs Vererbung:</p>
<p>ISO/IEC 14882:2003 schrieb:</p>
<blockquote>
<p>Unless redefined in the derived class, members of a base class are also considered to be members of the derived class. The base class members are said to be inherited by the derived class. Inherited members can be referred to in expressions in the same manner as other members of the derived class, unless their names are hidden or ambiguous (10.2).</p>
</blockquote>
<p>1. Nicht-statische Datenmember werden nur deklariert und nicht definiert. Statische Datenmember müssen der ODR genügen - genau eine Definition im Programm. Gleiches gilt für Funktionen, es sei denn sie sind inline. Typen dürfen nur einmal pro ÜE definiert werden. Der Begriff Redefinition ist hier also deplaziert. Zumal es ja auf die Wiederverwendung von Namen von Membern ankommt, nicht die der Member selbst - das sagt der Standard aber gerade nicht.<br />
2. Der 3. Satz indiziert, dass Member, wenn sie verdeckt werden, nicht aus diesem Grunde auch nicht vererbt werden.<br />
Und das war auch mein Ausgangspunkt. Andererseits widerspricht das dem Gebrauch von Vererbung in anderen Teilen des Standards, der sinngemäß so zu formulieren wäre:<br />
Ein (benanntes) x ist Member einer Klasse O genau dann, wenn der Ausdruck o.x (o sein ein Ausdruck vom Typ O) auf dieses x verweist, und das ist im Falle der Verdeckung oder bei Mehrdeutigkeit gerade nicht der Fall.<br />
Die Möglichkeit einer using-Deklaration, um einen Namen sichtbar zu machen, spricht auch nicht für die eine oder andere Interpretation, schließlich kann man auch ganz normal geerbte Member per using redeklarieren - natürlich unter der üblichen Restriktion, dass ein Member nur einmal in einer Klassendefinition deklariert werden darf.</p>
<p>Es bleibt festzuhalten, dass der Begriff des vererbten Members im Standard selbst mehrdeutig ist.</p>
<p>Simon2 schrieb:</p>
<blockquote>
<p>Bleiben wir einfach dabei: Es gibt 2 voneinander unabhängige Mechanismen, die die gewünschte &quot;Vererbung&quot; unmöglich machen:<br />
- Verdeckung und<br />
- falsche Signatur.</p>
</blockquote>
<p>Was die Signatur hier zu suchen hat, bleibt schleierhaft. Selbst ein Überschreiben einer virtuellen Funktion führt dazu, dass alle Funktionen (einschließlich der Überschriebenen) der Basisklassen verdeckt werden. Richtig wäre in diesem Sinne:<br />
- Verdeckung<br />
- Mehrdeutigkeit</p>
<p>So oder so schweift das etwas vom eigentlichen Thema ab. Wir sind uns ja darin einig, <em>warum</em> ein Zuweisungsoperator einer Basisklasse nicht als Zuweisungsoperator der abgeleiteten Klasse nutzbar ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1380127</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1380127</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 07 Oct 2007 21:41:08 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Mon, 08 Oct 2007 11:33:14 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>...Was die Signatur hier zu suchen hat, bleibt schleierhaft....</p>
</blockquote>
<p>Hmmmm, einmal versuche ich's noch.<br />
Was üblicherweise von einer &quot;geerbten Funktion&quot; erwartet, ist folgendes:</p>
<pre><code class="language-cpp">struct A {
   void f(int);
};

struct B: public A {
   void g(string);
};

int main() {
   A a;
   a.f(3); // (*)
   B b;
   b.f(3); // geht und macht dasselbe wie (*)
...
</code></pre>
<p>Sprich: &quot;Wenn die Basisklasse das kann, kann es auch die Kindklasse&quot;</p>
<p>So wird (meine Vermutung) auch hier die Erwartung gewesen sein: &quot;Wenn bereits die Basisklasse kopierbar ist, dann auch die Kindklassen&quot;.</p>
<p>Im Gegensatz zu obigem Beispiel gibt es aber IMMER einen operator=(), der<br />
- den der Basisklasse verdeckt UND<br />
- eine andere Signatur hat (im Gegensatz zu f()).</p>
<p>Aber wie Du schon gesagt hast: Ist alles OT und ich bin immer noch nicht davon überzeugt, dass ich Quatsch geschrieben habe.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1380405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1380405</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 08 Oct 2007 11:33:14 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Mon, 08 Oct 2007 11:46:33 GMT]]></title><description><![CDATA[<p>Der Knackpunkt ist das Verdecken. Um es mit deinem Beispiel zu sagen: dein struct B hat in dem Fall immer ein void f(float) (oder string oder sogar int), entweder explizit angegeben oder implizit vom Compiler hinzugefuegt. Die Deklaration einer Funktion gleichen Namens verdeckt unabhaengig von der Signatur die Fanktion der Basisklasse, weshalb die unterschiedliche Signatur irrelevant ist.</p>
<pre><code class="language-cpp">struct A {
  A&amp; operator= (const A&amp;);
};

struct B : A {
  A&amp; operator= (const A&amp;); //Aeusserst ungewoehnlich, aber machbar
};
</code></pre>
<p>Trotz der gleichen Signatur ueberdeckt hier op= den geerbten op=. Und es ist egal, ob das Ding nu op= oder f() oder schlagmichtot() heisst. Der einzige unterschied zu &quot;normalen&quot; Methoden ist der, dass op= vom Compiler eine implizite Deklaration verpasst bekommt fuer die Klassen, die ihn nicht explizit deklarieren, in welcher Form auch immer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1380415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1380415</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 08 Oct 2007 11:46:33 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Mon, 08 Oct 2007 12:08:29 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">struct Bar;
struct Foo
{
    Bar&amp; operator=(const Bar&amp;); // gleiche Signatur wie Copy-Zuweisungsoperator in Bar
    Foo&amp; operator=(const Foo&amp;);
};
struct Bar
{
    using Foo::operator=;
};
</code></pre>
<p>Bar hat jetzt die Zuweisungsoperatoren<br />
Bar&amp; Bar::operator=(const Bar&amp;) (implizit deklariert und verdeckt immer noch den operator gleicher Signatur in Foo)<br />
Foo&amp; Bar::operator=(const Foo&amp;) (aus Foo, eigentlich verdeckt, durch using sichtbar gemacht)</p>
<p>Die Verdeckung des Operators gleicher Signatur aus der Basisklasse ist hier allerdings eine Spezialregel der using-Deklaration - die allgemeine Regel würde Mehrdeutigkeit implizieren (dann hätte die Klasse aber gar keinen Kopierzuweisungsoperator - das darf nicht sein) oder die Verhinderung der impliziten Deklaration.</p>
<p>Simon2s Standpunkt ist durchaus haltbar - ich bestreite nur, das meine Argumentation widersprüchlich ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1380428</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1380428</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 08 Oct 2007 12:08:29 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Mon, 08 Oct 2007 12:17:39 GMT]]></title><description><![CDATA[<p>oehm Moment. Wer erbt hier von wem? In diesem beispiel gibts garkeine Vererbung und daher wird auch kein geerbter op= verdeckt. So wie es hier steht hast du zwei unabhaengige Klassen die beide die zwei gleichen Zuweisungsopis haben - wobei ich bezweifle dass das das so kompiliert, zumindest nicht, wenn du irgendwelche Member hast die du in den op= bearbeitest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1380433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1380433</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 08 Oct 2007 12:17:39 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Mon, 08 Oct 2007 12:21:34 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>...ich bestreite nur, das meine Argumentation widersprüchlich ist.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Ach sooooo - das war wohl nur ein Mißverständnis: Ich meinte nicht, dass DEINE Argumentation widersprüchlich sei, sondern hustbaers Aussage &quot;geerbte Funktionen kann man nicht überladen&quot; (die er natürlich auch nicht in der Allgemeinheit meinte) relativieren wollen !<br />
Dafür habe ich Deine Aussage benutzt.</p>
<p>Sorry, dass ich das in dem Zusammenhang nicht klar genug rausgestellt habe.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1380436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1380436</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 08 Oct 2007 12:21:34 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Mon, 08 Oct 2007 12:36:48 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>oehm Moment. Wer erbt hier von wem? ...</p>
</blockquote>
<p>Naja, das ist doch wohl eher ein schnell identifizierter Typo. Gemeint ist bestimmt:</p>
<pre><code class="language-cpp">struct Bar;
struct Foo
{
// ...
};
struct Bar : Foo
{
// ..
</code></pre>
<p>Würde ich jetzt jedenfalls aus dem Zusammenhang (und der Namensgebung) schließen.</p>
<p>pumuckl schrieb:</p>
<blockquote>
<p>...</p>
<pre><code class="language-cpp">struct A {
  A&amp; operator= (const A&amp;);
};

struct B : A {
  A&amp; operator= (const A&amp;); //Aeusserst ungewoehnlich, aber machbar
};
</code></pre>
<p>...</p>
</blockquote>
<p>Trotzdem bekommt (IIRC) B hier noch einen operator=(const B&amp;) verpasst, dessen Signatur &quot;nicht passt&quot;.</p>
<p>Aber nun hängt Euch doch nicht so an meiner Randbemerkung auf !! <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="🙄"
    /><br />
Ich habe NIEEEMALS behauptet, dass die Verdeckung unwichtig, sondern nur, dass es selbst dann nicht funktionieren würde, wenn die C++-Designer das mit der Verdeckung anders geregelt hätten.<br />
Den fachlichen Grund dafür hat Jaxom bereits in seinem ersten Posting genannt (&quot;...es würden nur Basisklassenanteile kopiert, es würden Redundanzen entstehen usw....&quot;); worin sich das technisch/semantisch ausdrückt, wollte ich mit dem Hinweis auf die Signatur unterstreichen - mehr nicht.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1380438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1380438</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 08 Oct 2007 12:36:48 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Mon, 08 Oct 2007 13:04:41 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>pumuckl schrieb:</p>
<blockquote>
<p>oehm Moment. Wer erbt hier von wem? ...</p>
</blockquote>
<p>Naja, das ist doch wohl eher ein schnell identifizierter Typo. Gemeint ist bestimmt:</p>
<pre><code class="language-cpp">struct Bar;
struct Foo
{
// ...
};
struct Bar : Foo
{
// ..
</code></pre>
</blockquote>
<p>Jo, das wars. danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1380467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1380467</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 08 Oct 2007 13:04:41 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Mon, 08 Oct 2007 13:07:19 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>...Jo, das wars. danke.</p>
</blockquote>
<p>Gern geschehen ! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1380468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1380468</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 08 Oct 2007 13:07:19 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Mon, 08 Oct 2007 17:04:46 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13624">@Simon2</a>:<br />
Ich verstehe immer noch nicht wie du geerbte Funktionen überladen willst.<br />
Überladen heisst für mich dass beim Aufruf auch &quot;overload resolution&quot; gemacht wird, und wenn ich durch den vermeintlichen &quot;Overload&quot; alle gleichnamigen Funktionen der Basisklasse verdecke, dann passiert eben keine &quot;overload resolution&quot; mehr wenn ich unqualifiziert aufrufe. Und wenn ich mit der Basisklasse qualifiziere ... dann wird der neue &quot;Overload&quot; in der abgeleiteten Klasse auch nicht verwendet.</p>
<p>Also. Wie überlade ich geerbte Funktionen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1380664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1380664</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 08 Oct 2007 17:04:46 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Tue, 09 Oct 2007 05:41:54 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Also. Wie überlade ich geerbte Funktionen?</p>
</blockquote>
<p>Indem ich sie per using in den Scope der abgeleiteten Klasse ziehe und dann überlade <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/1380938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1380938</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 09 Oct 2007 05:41:54 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Tue, 09 Oct 2007 10:54:11 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a> - danke. <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>War übrigens nicht MEIN Hinweis, sondern der von camper.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1381065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1381065</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 09 Oct 2007 10:54:11 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine Vererbung von operator= on Tue, 09 Oct 2007 09:58:32 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Also. Wie überlade ich geerbte Funktionen?</p>
</blockquote>
<p>Indem ich sie per using in den Scope der abgeleiteten Klasse ziehe und dann überlade <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>
</blockquote>
<p>using gilt nicht, das ist geschummelt <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1381099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1381099</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 09 Oct 2007 09:58:32 GMT</pubDate></item></channel></rss>