Предположим, мне дали библиотеку C ++, полную наследования. Мне дается Base *
в функции, когда я знаю, что он фактически указывает на Derived
объект, а Derived
наследует Base
. Но я не знаю, что это за наследование (публичное / защищенное / частное). Я также не знаю, есть ли какая-нибудь виртуальная функция в иерархии.
Учитывая эту ситуацию, без изучения исходного кода / документации Base
и Derived
, какой актерский состав мне использовать? Или мне следует сначала проконсультироваться с кодом / документацией, чтобы убедиться в полиморфизме?
Предпосылки
Я пишу функцию changeEvent
для QMainWindow
в Qt 4.7. Функция changeEvent
принимает QEvent *
, который я могу преобразовать в другой тип, зная QEvent :: type ()
. Мне было интересно, следует ли мне использовать static_cast
или dynamic_cast
.
Спасибо.