jest to przykład wzięty z Effective C++ 3ED, to mówi, że jeśli static_cast
jest używany w ten sposób, dolna część obiektu zostanie skopiowany , a połączenie jest wywoływane z tej części. Chciałem zrozumieć, co dzieje się pod maską, czy ktoś pomoże?Pytanie używając static_cast na „ten” wskaźnik w obiekcie pochodzącej z klasy bazowej
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
};
Chciałbym zauważyć że od 'static_cast (* this)' tworzy kopię, ten kod jest najprawdopodobniej ** NIE produkujący zamierzonego wyniku **. –
gatopeich