не так с этим кодом?
Не смог понять)
Помогите пожалуйста разобраться)
class A
{
vurtual void deinit () = 0;
~A () {deinit();}
};
class B : public A
{
void deinit {} {.....}
};
void func () {B b;}
http://eel.is/c++draft/class.cdtor#4
Читаю, пасиба
В общем, в кторе/дторе все функции не виртуальны и в данном примере deinit() это pure virtual function call
Ну я так и понял, пасиба) Плохо англ. знаю, перечитывал сидел Вот кстати вот этого я не знал и не понимаю как я это мог не прочитать где-нибудь
Да, это удивительно, обычно объясняют, что (реализационно) vtbl инициализируется в конструкторе и деинициализируется в деструкторе
Аааа, то есть на момент вызова этой функции ещё не создана таблица, так?
Она создана, просто (де)инициализирована в A::_vtbl классом А
Ааа, все, понял, да, точно
Вообще, с кодом все ок. Но есть одна особенность - виртуальная функция в деструкторе родителя будет вызываться только от родителя.
Да, именно в этом и был вопрос видимо)
Обсуждают сегодня