16
Patrząc na qwidget.h znalazłem destruktora jak poniżej:Dlaczego destruktor QWidget nie jest wirtualny?
~QWidget();
Zastanawiałem się, dlaczego to nie jest zadeklarowany jako wirtualny
Patrząc na qwidget.h znalazłem destruktora jak poniżej:Dlaczego destruktor QWidget nie jest wirtualny?
~QWidget();
Zastanawiałem się, dlaczego to nie jest zadeklarowany jako wirtualny
Destruktor jest wirtualny, ponieważ wywodzi się z QWidget QObject który ma wirtualny destruktor. Dlaczego nie jest deklarowane jako wirtualne w kodzie, jest albo kwestią stylu, albo nieszkodliwym błędem. Sam oświadczyłbym, że to jest wirtualne.
Właściwie w C++ metoda w podklasie jest wirtualna, jeśli jest zadeklarowana jako taka w klasie bazowej, więc w tym przypadku wirtualne słowo kluczowe nie jest konieczne dla QWidget. Podobnie jak John, dodałbym także wirtualne słowo kluczowe dla podklas. –
@john, Byłem pod fałszywym wrażeniem, że 'virtual' nie powoduje pośredniego spadku łańcucha dziedziczenia. Okazuje się, że się myliłem. Dzięki za wskazanie tego! –