They are smart pointers, when you destroy object normal pointer will point somewhere but not NULL which make it hard to check, smart pointers in UE4 API keep on track via UObject system if object been destroyed and clears all smart pointers pointing to it.