Двойное наследование с не виртуальным деструктором (Y-образным)

Теперь GHCi имеет режим многострочного ввода, включаемый с помощью: set + m. Например,

Prelude> :set +m
Prelude> let fac 0 = 1
Prelude|     fac n = n * fac (n-1)
Prelude|
Prelude> fac 10
3628800
0
задан zzz777 18 January 2019 в 03:06
поделиться

1 ответ

Деструктор Си не виртуален.

Да, это так. У него есть база (базы) с виртуальным деструктором (ами), поэтому деструктор C неявно виртуален. Является ли деструктор объявленным виртуальным явно или нет, не имеет значения. То же самое относится и к деструктору D.

Я должен удалить экземпляры класса D через указатель на C.

Я подозреваю, что в некоторых угловых случаях ~ B () не выполняется - возможно ли это?

Пока деструктор C является виртуальным, проблем нет. Если деструктор C не был виртуальным, удаление объекта с помощью указателя на C имело бы неопределенное поведение.

0
ответ дан eerorika 18 January 2019 в 03:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: