switch内部的变量定义
case true:
string file_name; //错误:控制流绕过一个隐式初始化的变量
int ival = 0; //错误:控制流绕过一个显示初始化的变量
int jval;
break;
case false:
jval = next_num(); //正确
if(file_name.empty()) //file_name在作用域内,但是没有被初始化
如果需要为某个case分支定义并初始化一个变量,应该把变量定义在块内。
范围for语句
for(declaration : expression)
statement
expression必须是一个序列。拥有能返回迭代器的begin和end成员。
declaration定义一个变量,序列中的每个元素都得能转换成变量的类型。最简单的方法是使用auto类型说明符。如果需要对序列中的元素执行写操作,循环变量必须声明成引用类型。
每次迭代会重新定义循环控制变量,并将其初始化成序列中的下一个值,之后再执行statement。
break语句负责终止离它最近的while、do while、for和switch语句,并从这些语句之后的第一条语句开始继续执行。
continue语句终止最近的循环中当前迭代并立即开始下一次迭代。只能出现在for、while和do while循环内部。
goto语句的作用是从goto语句无条件跳转到同一函数的另一条语句。
异常处理:
throw表达式,异常检测部分使用throw表达式来表示遇到了无法处理的问题。即throw引发了异常。
try语句块,异常处理部分使用try语句块处理异常。try语句块以try开始,并以一个或多个catch子句结束。try语句块中代码抛出的异常通常会被某个catch子句处理。