Dies ist ein Beispiel aus Wirksam C++ 3ed, heißt es, wenn die static_cast
auf diese Weise verwendet wird, wird der Basisteil des Objekts kopiert und der Aufruf wird von diesem Teil aufgerufen. Ich wollte verstehen, was unter der Haube passiert, wird jemand helfen?Frage der Verwendung von static_cast auf "diesem" Zeiger in einem abgeleiteten Objekt zur Basisklasse
class Window { // base class
public:
virtual void onResize() { } // base onResize impl
};
class SpecialWindow: public Window { // derived class
public:
virtual void onResize() { // derived onResize impl;
static_cast<Window>(*this).onResize(); // cast *this to Window,
// then call its onResize;
// this doesn't work!
// do SpecialWindow-
} // specific stuff
};
würde ich bemerke dass seit 'static_cast (* this)' eine Kopie erstellt, wird dieser Code höchstwahrscheinlich ** NICHT das beabsichtigte Ergebnis ** erzeugen. –
gatopeich