(1)析构函数内调用delete this 析构函数内调用deletethis 可以理解为 函数无终止条件自我递归调用, 最终导致栈溢出。(注意:这里无论析构函数是否是虚函数) (2)除析构函数外其他函数 都可以,许多老一点的库代码里都有类似releasexxx()或者是recycleself()的函数 (3)使用delete this注意事项 3.1 要保证对象被分配到heap内,this对象是必须是用 new操作符分配的(亦不能用placement new,因为无法确定内存位置是否在heap内); 3.2 delete this后,不能访问该对象任何的成员变量及虚函数(delete this回收的是数据,这包括对象的数据成员以及vtable,不包括函数代码);不能再访问this指针。换句话说,你不能去检查它、将它和其他指针比较、和 NULL比较、打印它、转换它,以及其它的任何事情; (4)如何要求对象产生于Heap内 根据《More effective C++》书中条款27,保证以上禁忌列表基本手段: 4.1将析构函数protected化,保证继承有效,同样保证对象必须使用new在堆上分配内存; 4.2在基类中提供型如destroy()函数,里面仅有一句delete this--以保证第三方能够将分配的内存回收; void destory const() { delete this; }