class Base {
public:
virtual void f() {}
};
class Derived : private Base {
public:
void f() override {}
};
Meine Frage gibt es irgendwelche Verwendung für solche Überschreibung? Private Vererbung bedeutet, dass Sie Derived
in Base
Zeiger nicht speichern können, und es wird daher nie benötigt, dynamisch f
auf den richtigen Typ zu senden.Warum unter privater Vererbung überschreiben?
Hinweis: Einige Verfahren in 'Base' ruft' this-> f() '. Ruft es 'Base :: f()' oder 'Derived :: f()' auf? – dhke
können Sie C-Style Cast verwenden, um 'Derived *' in 'Base *' zu speichern. – Ven
@Ven: Sie können C-Style-Casts verwenden, um fast alles in irgendetwas zu speichern. Sie werden jedoch nicht immer definiertes Verhalten bekommen ;-). – dhke