“switch结构,只能在它的最后一个case标号或default标号后面定义变量”这是什么意思

来源:百度知道 编辑:UC知道 时间:2024/05/29 22:32:54
C++ primer上的
如果定义在最后面那还有什么用 不是没法用到了吗

可以在case中声明基本类型,但是不能初始化
不能实例化一个对象,因为创建一个对象时会自动调用构造函数,相当于初始化该对象
这一点和goto语句很像,不能跨过变量的初始化
举例如下
class A{};
switch(1)
{
case 0:
int i=0; //error
int i; //ok,i的作用范围为此行到之后的整个switch
i=0; //ok,但不会执行
break;
case 1:
A a; //error
cout <<i; //i已声明,但未赋值。i的值不一定
break;
default:
...
break;
}