提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
介绍
C++Primer第五章学习心得
一、简单语句
空语句与空块:空语句即一个单独的“ ; ”,而空块常见于wihile和for循环
while(cin>>s&&s!=sought);
while(cin>>s&&s!=sought){}
上述两种写法等价
二、条件语句、迭代语句、跳转语句
switch语句中,允许多组公用一个操作,下面两种写法都可以
switch(ch){
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
++cnt;
break;
}
switch(ch){
case 'a': case 'e': case 'i': case 'o': case 'u':
++cnt;
break;
}
另外,default最好加上,哪怕什么都不做,但需注意如果switch以一个空的default作为结束,必须跟上一条空语句或者空块。
switch内部最好不要声明并初始化变量,可以仅声明,如果需要初始化务必在语句块中,确保其它case在作用域之外。个人理解是声明由编译器处理,但初始化运行时才进行,所以在switch内初始化变量时编译器认为有跳过该初始化语句风险,因此无法编译通过。加上作用域后,确保该变量只在作用域内存在,不会有跳过风险,因此可以通过。
case true:
string file_name;//错误,因为string对象内初始化
int ival = 0;//错误,显式初始化
int jval;//正确
break;
case false:
jval = next_num();//正确,已经声明
file_name = name;//错误
//改正
case true:
{
string file_name;//正确
file_name = name;
break;
}
三、try语句和异常处理
异常处理包括:throw表达式异常检测和try语句块异常处理
throw runtime_error("字符串");
try{
program-statements
} catch(expression-declaration){
handler-statements
}catch(expression-declaration){
handler-statements
}
标准异常:
exception头文件定义了最通用的异常类exception,只报告异常发生
stdexcept头文件定义了几种常见的异常类(exception、runtime_error、range_error等),需要用字符串初始化,提供what()成员函数,输出错误信息
new头文件定义了bad_alloc异常
type_info头文件定义了bad_cast异常
总结
switch语句中变量声明和作用域值得注意。异常处理没怎么实际接触,仅做记录