在 C++ 中,我可以在调用堆栈中没有 A() 的情况下从 A() 内部跳转到 B() 吗?goto
这个案子有什么类似的吗?我的情况是我应该在其功能之一结束时销毁一个对象。
class timeBomb{
public:
void detonate(int time){
sleep(time);
goto this->blast(this); //something like that
};
timeBomb();
static void blast(timeBomb bomb){
delete bomb;
}
}
int main(){
timeBomb *myBomb = new timeBomb();
myBomb->detonate(2);
return 0;
}
我本可以离开的delete this;
。但在我的代码中,在特定条件下,构造函数本身必须调用一个函数,该函数又调用一个函数,如 detonate。
为了解决我的问题,我可以问我能否中止创建对象。但我发现从一个函数跳转到另一个避免调用堆栈中的父函数非常有趣且有用。