В С++ построение T q = dynamic_cast<T>(p);
выполняет отладку времени выполнения указателя p
к другому типу указателя T
, который должен появиться в иерархии наследования динамического типа *p
для успеха. Все хорошо и хорошо.
Однако также возможно выполнить dynamic_cast<void*>(p)
, который просто вернет указатель на "самый производный объект" (см. 5.2.7:: 7 в С++ 11). Я понимаю, что эта функция, вероятно, предоставляется бесплатно при реализации динамического приведения, но полезно ли это на практике? В конце концов, его тип возврата в лучшем случае void*
, так что это хорошо?