删除指向 Const 的指针 (T const*)
在 C 中,众所周知,非常量成员函数不能被删除使用 const 指针调用。然而,在删除指向 const 的指针时会遇到一个常见的异常,即使它调用了类的析构函数,而该析构函数不是 const 方法。这种明显的异常现象提出了一个问题:为什么允许这样做?
答案在于支持对对象进行必要的销毁。当动态创建对象时,必须有一种方法来删除它们,即使它们是 const 的。这是通过允许删除 const 指针来实现的,尽管修改 const 对象受到限制。
以下代码演示了此行为:
<code class="cpp">// dynamically create object that cannot be changed const Foo * f = new Foo; // use const member functions here // delete it delete f;</code>
另一个示例表明此行为不受限制对于动态创建的对象:
<code class="cpp">{ const Foo f; // use it } // destructor called here</code>
如果无法在 const 对象上调用析构函数,则会完全禁止使用 const 对象。这个余量确保了对象的正确销毁,无论其 const 状态如何。
以上是为什么我们可以删除 C 中的 const 指针?的详细内容。更多信息请关注PHP中文网其他相关文章!