class A
{
public:
A(){}
~A(){}
};
int main()
{
goto Flag1;
int i;
Flag1: i=2;
goto Flag2;
A a;
Flag2: i++;
return 0;
}
第一个goto跳到Flag1是没有问题的,但是第二个goto跳到Flag2是不行的。C++标准定义goto不能跳过构造函数的执行。
在vs中编译上面代码会有错误提示:
error C2362: initialization of 'a' is skipped by 'goto Flag2'
本文探讨了C++中使用goto语句跳过构造函数执行的问题。通过具体代码示例展示了这种行为如何违反C++标准,并解释了编译器对此类情况的错误提示。
693

被折叠的 条评论
为什么被折叠?



