This:
static_cast<Window>(*this).onResize();
фактически такой же, как этот:
{
Window w = *this;
w.onResize();
} // w.~Window() is called to destroy 'w'
В первой строке создается копия подобъекта базового класса Window
объекта SpecialWindow
на что указывает this
.Вторая строка вызывает onResize()
для этой копии.
Это важно: вы никогда не вызываете Window::onResize()
для объекта, на который указывает this
;Вы звоните Window::onResize()
на копию this
, которую вы создали.Объект, на который указывает this
, не будет затронут после того, как вы скопируете его.
Если вы хотите вызвать Window::onResize()
для объекта, на который указывает this
, , вы можете сделать это следующим образомэто :
Window::onResize();