读书人

有有关问题大家帮忙看看

发布时间: 2012-04-14 17:14:21 作者: rapoo

有问题,大家帮忙看看
class A
{
int i;
public:
A();
~A();
}

int main()
{
int i;
cin> > i;

switch(i)
{
case 1: A a1; break;
case 2: A a2; break;
}

return 0;
}

Thinking in C++ 上的例子,问题是编译会出错,因为case 1:有可能跳过
define a1; 为什么去掉case 2就可以编译了?不是一样可以跳过define a1?

[解决办法]
case 1: A a1; break;
case 2: A a2; break;

改成

case 1: {A a1;} break;
case 2: {A a2;} break;
[解决办法]
因为去掉case 2后,在switch中只有一个case,不可能跳过过a1定义而使用a1(注意a1的作用域是statement scope,只在switch语句内有效)。

读书人网 >C++

热点推荐