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