Дайте точную копию скопированного ответа от того, что другой пользователь, jk, написал на точно такой же вопрос здесь, в Stackoverflow.
Если я скажу, что у меня есть собака, вы можете смело предполагать, что у меня есть собака.
Если я скажу вам, что у меня есть домашнее животное, вы не знаете, является ли это животное собакой, оно
может быть кошка или даже жираф. Не зная каких-то дополнительных
информация, которую вы не можете с уверенностью предположить, что у меня есть собака.
аналогично, производный объект является объектом базового класса (как его
класс), поэтому может указывать на указатель базового класса. Однако база
Объект класса не является производным объектом класса, поэтому не может быть назначен
указатель производного класса.
(Скрип, который вы сейчас услышите, - это растяжение аналогии)
Предположим, вы хотите купить мне подарок для моего питомца.
В первом сценарии вы знаете, что это собака, вы можете купить мне поводок,
все счастливы.
Во втором сценарии я не сказал вам, что мой питомец, так что если вы
собирается купить мне подарок в любом случае вам нужно знать информацию, которую я не имею
сказал (или просто угадай), ты купишь мне поводок, если окажется, что я действительно
была собака, все счастливы.
Однако, если у меня действительно был кот, то теперь мы знаем, что вы сделали плохо
предположение (приведение) и несчастный кот на поводке (ошибка времени выполнения)