请参考以下代码:
class foo
{
public:
foo(){}
~foo(){}
void done() { delete this;}
private:
int x;
};
以下两个选项中发生了什么(并且是否有效):
选项1:
void main()
{
foo* a = new foo();
a->done();
delete a;
}
选项2:
void main()
{
foo a;
a.done();
}
在选项1中,第二个delete a;
语句是否会导致异常或堆破坏?
在选项2中,是否会导致异常或堆破坏?
void main()
不是有效的 C++。 - Kerrek SB