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