不可递归调用析构函数
8.45 ID_this_deleteInDestructor
析构函数开始执行时,对象整体已不存在,再次调用析构函数会导致标准未定义的行为。
示例:
struct A {
~A() {
delete this; // Non-compliant, undefined behavior
}
};
在析构函数中调用 delete this 会再次调用析构函数,导致未定义的行为。
相关
依据
ISO/IEC 14882:2003 3.8(1)
ISO/IEC 14882:2003 12.4(14)-undefined
ISO/IEC 14882:2011 3.8(1)
ISO/IEC 14882:2011 12.4(15)-undefined