【发布时间】:2017-01-23 00:19:03
【问题描述】:
我发现自己在理解 5.3.5$5 中从 C++ 标准中引用的以下句子时遇到了麻烦:(重点是我的)
如果要删除的对象在删除时具有 incomplete 类类型,并且 complete 类具有非平凡的析构函数或释放函数,则行为未定义.
我知道这个删除不完整类型的问题已经在 SO 中讨论过多次,我可以理解为什么删除不完整的类类型是未定义的行为。这个Q&A 解释得很好。
我无法理解的是关于完整类类型的部分。这是否意味着删除完整类的对象具有非平凡的析构函数或释放函数是未定义的行为?如果是这样,请提供一些代码来说明它可能导致的未定义行为。
【问题讨论】: