"такой же тип" - понятие сильно растяжимое... :) :) а вапче - в С++ всё можно. если знаешь как. ;)
// ты ведь не спрашивал "как", верно? видимо сам знаешь. так что - если кто спросит - скажи что я разрешил.
В общем случае - нет.
В качественном коде ненулевой указатель указывает на объект допустимого типа. При разрушении указатель обнуляется, чтобы больше не указывать на объекты.
type_traits
This header defines a series of classes to obtain type information on compile-time.
А как это будет работать при выполенении программы?
Укакзатель может содержать все что угогдно. Например, по ошибке перешли границу массива, перезаписали следующий за ним указатель.