笔记会持续更新,有错误的地方欢迎指正,谢谢!
特别简单:
1.一个表达式末尾加上分号就成了表达式语句。
2.用花括号括起来的是复合语句。
3.条件语句:
else与离它最近的尚未匹配的if匹配。建议:if和else的花括号都写上,并注意缩进。switch结束的两种情况:1.遇到break;2.到了switch的结尾。即使不在default里做任何操作,最好也要写上。
4.迭代语句:
while、for、范围for(它只能遍历所有)等。当然遍历所有比较常用,所以C++设计者搞了范围for这个语法。不允许在范围for中增删容器元素,因为会改变范围for中预存的end()值。
范围for举例:把vector的所有元素×2。
vector<int> v = {0, 1, 2, 3};
for(auto &r : v) //别忘了这里是引用,没有引用的就不会改原来容器中的值了!
{
r *= 2;
}
5.跳转语句:break;和continue;
6.try语句块和异常处理:
异常是指存在于运行时的反常行为,而且这些行为超出了函数正常功能的范围,就是说函数无法处理了,例如失去数据库连接以及遇到意外输入等。 C++有一套异常处理机制:
throw表达式,用于异常检测,表示程序遇到了无法处理的问题,throw就是抛出异常。
try语句块,用于异常处理,try语句块以关键字try开始,并以一个或多个catch子句结束。也就是说,try语句块中代码抛出的异常会被某个catch子句处理。
一套异常类(exception class),用于在throw和catch语句之间传递异常的具体信息。
1.throw表达式
检查两条数据是不是同一本书:
if(item1.isbn() != item2.isbn())
{
throw runtime_error("不是同一种书");
}
cout << item1 + item2;
2.try语句块
接着上面的代码处理:
while(cin >> item1 >> item2)
{
try //若不能相加则抛异常。
{
if(item1.isbn() != item2.isbn())
{
throw runtime_error("不是同一种书");
}
cout << item1 + item2;
}
catch(runtime_error err)
{
cout << err.what() << "再试一次?请输入yes或者 no" << endl;//what是库里的一个函数。
string str;
cin >> str;
if(!cin || str == "no") //如果没输入或者输入no,就跳出循环,结束程序。
break;
}
}
如果没有找到匹配的catch子句,程序会转到terminat库函数,导致程序非正常退出,即终止当前程序的执行。
总之:要做出非常鲁棒的异常处理,仅靠此知识还是不够的。。。