Ваш приведение к Derived3
- это приведение в стиле C, которое фактически совпадает со следующим приведением в стиле C ++.
delete reinterpret_cast<Derived3*>(Var);
Оба этих приведения сообщают среде выполнения C ++, что вы хотите заставить среду выполнения интерпретировать память, на которую ссылается приведение (Var
), как данный тип (Derived3*
) и полностью понимать последствия. Следовательно, проверка ошибок не выполняется.
Если вас беспокоит законность актерского состава, используйте следующее:
static_cast<Derived3*>(Var)
: генерирует ошибку компиляции, если приведение неверно.
dynamic_cast<Derived3*>(Var)
: Возвращает 0 (ноль), если приведение неверно.