该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
class A
{
public:
int a;
A(){a=5;cout<
~A(){cout<
};
void main()
{
{//虚拟一个变量作用域
A a;
goto label_OutOf_Scope;//放心,这句可以安全回收资源,引起“A析构”
//__asm jmp label1;;//这句不会引起“A析构”
int x=1;
++x;
}
label_OutOf_Scope:
system("pause");
return;
}
有人就跳出来说了,用goto会造成像下面的代码就很混乱。
start:
int myInteger = 5;
goto addVal;
writeResult:
cout<
goto start;
addVal:
myInteger += 10;
goto writeResult
好吧,我说:如果不是有人故意举例子,谁会写这样Brainfuck的代码。
我说:真正用goto的地方都要加条件做判断的。
于是我就借个别人故意刁难的例子修改一下:
start:
int myInteger = 5;
if(myInteger>4){goto addVal;}
cout<
writeResult:
cout<
if(writeResult<=100){goto start;}
cout<
addVal:
myInteger += 10;
if(myInteger<20){goto writeResult;}
cout<
如果真要遇到这种情况的话,还是用goto比较清晰,虽然会跳转
但是我们能清楚看到:在什么情况下会跳转,跳转的label是什么意思
这比while循环更清晰,因为while循环不带label,goto带label,我一看就知道跳转的位置是干什么的
而且硬要用while循环,算法难度会难很多。