【发布时间】:2015-05-04 14:17:43
【问题描述】:
【问题讨论】:
-
我想不出任何将一个有效程序变成另一个具有不同含义的有效程序的情况。但它很容易导致程序默默地表现出未定义的行为。例如。 "5.3.5/5 如果要删除的对象在删除点具有不完整的类类型,并且完整的类具有非平凡的析构函数或释放函数,则行为未定义。"跨度>
-
@IgorTandetnik 您能否将您的评论转换为答案,最好使用一个小代码示例?
-
无论类型是否完整,它都会产生影响。
-
很简单,真的:
class C; void f(C* p) { delete p; /* ~C doesn't run */} -
我不认为我的直觉可以作为答案。仅仅因为我想不出任何这样的案例并不意味着它们不存在。
标签: c++ include forward-declaration