static_cast vs dynamic_cast

Предположим, мне дали библиотеку C ++, полную наследования. Мне дается Base * в функции, когда я знаю, что он фактически указывает на Derived объект, а Derived наследует Base . Но я не знаю, что это за наследование (публичное / защищенное / частное). Я также не знаю, есть ли какая-нибудь виртуальная функция в иерархии.

Учитывая эту ситуацию, без изучения исходного кода / документации Base и Derived , какой актерский состав мне использовать? Или мне следует сначала проконсультироваться с кодом / документацией, чтобы убедиться в полиморфизме?

Предпосылки

Я пишу функцию changeEvent для QMainWindow в Qt 4.7. Функция changeEvent принимает QEvent * , который я могу преобразовать в другой тип, зная QEvent :: type () . Мне было интересно, следует ли мне использовать static_cast или dynamic_cast .

Спасибо.

10
задан Donotalo 12 January 2011 в 04:41
поделиться