我有以下代码,我得到堆栈溢出错误任何人都可以请解释我这里有什么问题.从我的理解,这个指针指向当前对象,所以为什么我不能在析构函数中删除它;
class Object
{
private:
static int objCount;
public:
int getCount()
{
int i =10;
return i++;
}
Object()
{
cout<< "Obj Created = "<<++objCount<<endl;
cout <<endl<<this->getCount()<<endl;
}
~Object()
{
cout<<"Destructor Called\n"<<"Deleted Obj="<<objCount--<<endl;
delete this;
}
};
int Object::objCount = 0;
int _tmain(int argc, _TCHAR* argv[])
{
{
Object obj1;
}
{
Object *obj2 = new Object();
}
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*cia 15
你delete this;在课堂上的析构函数.
好吧,delete调用类的析构函数.
你delete this;在课堂上的析构函数.
...
<!<!<!Stack Overflow!>!>!>
(对不起,我觉得有必要把这个包括在内......这可能会破坏它的悲伤!
无聊故事的道德,不要delete this;在你的析构函数上做(或者根本不做!)
做[1]
Object *obj = new Object();
delete obj;
Run Code Online (Sandbox Code Playgroud)
或者更好,只是
Object obj;
Run Code Online (Sandbox Code Playgroud)
[1] @kfsone的答案更准确地指出堆栈溢出实际上是由obj1析构函数触发的.