Специфично для C ++, приведение иногда используется так:
void TestFunction(BaseClass* base_class_object)
{
DerivedClass* d = dynamic_cast<DerivedClass*>(base_class_object);
d->method();
}
Если предположить, что BaseClass
объявлен как полиморфный (т. Е. Имеет метод virtual
), dynamic_cast
будет корректносотворите base_class_object
, если он указывает на полный DerivedClass
объект.В противном случае IIRC вернет нулевой указатель.Таким образом, во время выполнения вы можете динамически определять тип объекта и делать с ним больше вещей с помощью «приведения».
Обновление -
Ответ Тони и комментарий Алса прекрасно дополняют мой ответ и дают более полную картину.