T *p = new T();
对于堆上的指针,可能会有灾难性的操作,
p++; // (1) scope missed p = new T(); // (2) re-assignment
这将导致内存泄漏或由于删除错误而导致的崩溃.除了使用智能指针,总是使堆指针成为const;
T* const p = new T(); // now "p" is not modifiable
这个问题在于保持良好的编程实践和编码风格.
解决方法
我犹豫,总是说,但你提出的看法似乎是很多/大多数情况下合理的. Const的正确性是大多数C人在功能参数中付出了相当大的关注,但在本地(甚至是成员)变量中并不多.我们可能会更好地这样做.