T *p = new T();
Run Code Online (Sandbox Code Playgroud)
对于堆上的指针,可能会有灾难性的操作,例如:
p++; // (1) scope missed
p = new T(); // (2) re-assignment
Run Code Online (Sandbox Code Playgroud)
这会导致内存泄漏或因错误而崩溃delete.除了使用智能指针之外,建议总是将堆指针设为a const;
T* const p = new T(); // now "p" is not modifiable
Run Code Online (Sandbox Code Playgroud)
这个问题是关于保持良好的编程实践和编码风格.
小智 7
好吧,我唯一一次使用原始堆指针就是编写自己的数据结构.如果你使用const指针,你的数据结构会立即变得无法分配.这可能是也可能不是你想要的.
我犹豫是否总是说,但你的建议对于许多/大多数情况来说似乎是合理的。大多数 C++ 人员在函数参数中相当关注 const 正确性,但在局部(甚至成员)变量中则不太关注。我们这样做可能会更好。