Ответ 1
Это стандартное преобразование указателя на основе базы. Правила заключаются в том, что указатель на D
с некоторыми квалификациями const
/volatile
может быть преобразован в указатель на B
с теми же квалификаторами, если B
является базовым классом D
.
Стандартные преобразования - это неявные преобразования со встроенными значениями и являются отдельными понятиями для таких вещей, как static_cast
или приведения в стиле C.
Как правило, лучше всего полагаться на неявные преобразования, когда сможете. Явные преобразования добавляют больше шума кода и могут скрывать некоторые ошибки обслуживания.