博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++ primer 5th 笔记:第五章
阅读量:6811 次
发布时间:2019-06-26

本文共 2674 字,大约阅读时间需要 8 分钟。

第五章:语句

  笔记

    1. 复合语句是指用花括号括起来语句和声明的序列,复合语句也被称作块(block)一个块就是一个作用域

    2. 定义在控制结构(if、switch、while、for)中的变量只在相应的语句内部可见,一旦语句结束,变量也就超出其作用范围了。

    3. 对于悬垂else问题,c++规定,else与离它最近的尚未匹配的if匹配,从而消除了程序的二义性。

    4. switch语句中,case标签必须是整型常量表达式,且任何两个case标签的值不能相同

    5. c++语言规定,不允许跨过变量的初始化语句直接跳转到该变量作用域的另一个位置(p163)。如果需要为某个case分支定义并初始化一个变量,我们应该把变量定义在块内,从而确保后面的所有case标签都在变量的作用域之外。

    6. 牢记for语句中定义的对象只在for循环体内可见

    7. break语句负责终止离它最近的while、do while、for或switch语句,并从这些语句之后的第一条语句开始继续执行。

    8. continue语句终止最近的循环中的当前迭代并立即开始下一次迭代。continue语句只能出现在for、while和do while循环的内部。(注意:无switch)

 

重点知识点总结:

    一. 范围for语句:

    c++11新标准引入了一种更简单的for语句,这种语句可以遍历容器或其他序列的所有元素。形式:

    for (declaration : expression)        statement

    expression表示的必须是一个序列,比如用花括号括起来的初始值列表、数组、vector或者string等类型的对象,这些类型的共同特点是拥有能返回迭代器的begin()和end()成员。 declaration定义一个变量,序列中的每一个元素都得能转换成该变量的类型,确保类型相容最简单的方法是使用auto类型说明符。如果需要对序列中元素执行写操作,循环变量必须声明为引用类型

    每次迭代都会定义循环控制变量,并将其初始化成序列中的下一个值,之后才执行statement。

    vector
v = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9};    // 范围变量必须是引用类型,这样才能对元素执行写操作    for (auto &r :v)      r *= 2; // 将v中每个元素的值翻倍

    二. try语句块和异常处理

    异常是指存在于运行时的反常行为,这些行为超出了函数正常功能的范围。典型的异常包括失去数据库连接以及遇到意外输入等。

    当程序的某部分检测到一个它无法处理的问题时,需要用到异常处理。此时,检测出问题的部分应该发出某种信号以表明程序遇到了故障,无法继续下去了,而且信号的发出方无须知道故障将在何处得到解决。

1 #include 
2 #include "Sales_item.h" 3 #include
4 using std::cin; 5 using std::endl; 6 using std::cout; 7 using std::runtime_error; // runtime_error是一个异常类 8 9 int main()10 {11 Sales_item item1, item2;12 while(cin >> item1 >> item2)13 {14 try // try 语句块中代码抛出的异常通常会被某个catch子句处理15 {16 if (item1.isbn() == item2.isbn())17 {18 cout << item1 + item2 << endl;19 }20 else21 {22 throw runtime_error("Date must refer to same ISBN"); 23 // throw引发(raise)了异常24 }25 }26 catch(runtime_error err) // runtime_error类传递异常的具体信息27 {28 cout << err.what()29 << "\n Try Again? Enter y or n" << endl;30 char c;31 cin >> c;32 if (!cin || c == 'n')33 break;34 }35 }36 return 0;37 }

      c++标准库定义了一组类,用于报告标准库函数遇到的问题,分别定义在四个头文件中:

          exception、stdexcept、new、type_info

  术语

    表达式语句(expression statement)、复合语句(compound statement)、悬垂else(dangling else)、

    范围for语句(rang for statement)、throw表达式(throw expression)、try语句块(try block)、异常类(exception class)。

 

                                                2016-10-28 20:39:33

转载于:https://www.cnblogs.com/wzhe/p/6006184.html

你可能感兴趣的文章
Amaze UI 3.0即将内测,全新设计,全新体验,等你尝鲜!!
查看>>
Watson使用指南
查看>>
PHP各大支付平台在线支付集成源码
查看>>
你的GitHub,怎么和我用的不太一样?
查看>>
美团即时物流的分布式系统架构设计
查看>>
GitOps:Weaveworks通过开发者工具实现CI/CD
查看>>
访谈:关于持续敏捷交付与服务矩阵
查看>>
为什么AppDynamics重构指标服务时选择了HBase而不是别的NOSQL
查看>>
GitLab公布关于开发者趋势的问卷调查结果
查看>>
测试人员的GitHub
查看>>
微软宣布提供Azure Cognitive Services容器支持
查看>>
红帽收购混合云管理提供商NooBaa,混合云爆发节点临近!
查看>>
《F# Deep Dives》书评与作者问答
查看>>
InfoQ播客:Randy Shoup谈Stitch Fix的技术栈,数据科学和微服务架构
查看>>
ASP.NET Core提供模块化Middleware组件
查看>>
模拟黑客帝国效果2(canvas实验)
查看>>
OpenJDK9 Hotspot:Zero 解释器 初探
查看>>
JS中bind方法与函数柯里化
查看>>
调查显示:明年容器企业级用户将出现井喷式增长
查看>>
官方实锤!微软宣布以 75 亿美元收购 GitHub
查看>>