Превратите человека в указатель. Скажите им, что они являются указателем на класс человек, и вы вызываете функцию «RemoveCoat». Когда они указывают на человека и говорят «RemoveCoat», все в порядке. Если у человека нет пальто, не стоит беспокоиться - мы проверяем это, все, что действительно делает RemoveCoat, это снимает верхний слой одежды (с проверкой на порядочность).
Теперь, что происходит, если они указывают куда-то случайным образом и говорят «Удалить пальто» - если они указывают на стену, краска может отслоиться, если они указывают на дерево, от которого может оторваться кора, собаки могут побриться, USS Enterprise может опустить свои щиты в критический момент и т. Д.!
Нет способа выяснить, что может произойти, поведение не было определено для этой ситуации - это называется неопределенным поведением и его следует избегать.