T *p = new T();
Для указателя на кучу могут быть катастрофические операции, такие как,
p++; // (1) scope missed
p = new T(); // (2) re-assignment
, которые могут привести к утечкам памяти или сбоям из-за неправильного delete
.Помимо использования умных указателей, желательно всегда сделать указатель кучи const
;
T* const p = new T(); // now "p" is not modifiable
Этот вопрос касается поддержания хорошей практики программирования и стиля кодирования.