void f(int i){
if(i<10){
goto jump1;//如果直接跳到jump1,则直接跳过x1初始化,没有进行构造,则在离开时,也无法析构,编译时会报错
}
X x1;
jump1:
switch(i){
case 1:
X x2;
break;
case 2: //报错,理由同上
X x3;
break;
}
}
struct Y{
float f;
int i;
Y(int a);//不是default constructor,因为构造函数有参数
}
Y y1[]={Y(1),Y(2),Y(3)};√
Y y2[2]={Y(1)};×//只给了第一个Y(1),未给出第二个,默认让编译器自动寻找default constructor,但编译器找不到,于是报错