Father
{
virtual void g() {}
};
struct Child : Mother, Father
{
};
В памяти объект типа Child будет таким: [Mother::vptr][Father::vptr].
Вопрос: когда происходит каст к указателю/ссылке одного из родителей этого объекта, то при вызове виртуальной функции через указатель/ссылку компилятор как-то распознает по какому из 2ух указателей нужно обратится к нужной vtable или как-то по другому происходит?
Куда кастуют, метод того класса и вызывается. У тебя в чилде не переопределен f
Ну так если каст к предку то сразу понятно какую втбл брать же
Не обязательно, у родителей есть
И? Тут даже виртуальность f и g значения не имеет, ибо они не переопределены в ребенке.
Для примера этого достаточно. Хоть в потомке нет переопределений, vtable все равно будет, хоть такая же как и у родителей
Никто не говорит что не будет
Обсуждают сегодня