64 空语句存在危害 p155
65 复合语句是指用花括号括起来的,也被叫做块
一个块就是一个作用域
66 空块的概念p155
67 else只和最近的没配对的if 进行配对 (悬垂else)
68 case标签必须是一个整形常量表达式
69 default也是一种特殊的case标签
如果没有任何一个case标签能匹配上switch表达式的值,程序将执行紧跟在default标签后面的语句,default后面可以跟着空语句或者一个空块
70 c++语言规定,不允许跨过变量的初始化语句直接跳到该变量作用域的另一个位置
如果需要为某个case分支定义并初始化一个变量,我们应该把变量定义在块内,从而确保后面的所有的case标签都在变量的作用域外
71 while for 在循环开始前检查条件,而do while语句先执行循环体
72 for循环
73 省略for语句头的某些部分
74 为什么不能通过范围for语句来给vector增加对象?
在范围for语句中,预存了end()的值,一旦在序列中添加、删除元素,end的函数值就可能变得无效了。
75 do while语句
76 do while语句不允许在条件部分定义变量
77 continue 终止最近的循环中的当前迭代并立即开始下一次迭代,continue语句只能出现在for while do while循环的内部,或者嵌套在此类循环里的语句或者是块的内部
78 goto 语句 标签 控制权转移到一条带标签的语句
79 try 语句块和异常处理
throw 表达式,try语句块 catch子句(匹配异常类型,异常处理代码,负责处理代码抛出的异常)
80 throw runtime_error(“data…”) p174
81 try语句块内声明的变量在块外部无法访问,特别是在catch子句内也无法访问
82 runtime_error的what成员返回的是初始化一个具体对象时所用的string 对象的副本
83 标准异常表(标准库异常类定义的几种运算,#include) p176
84 异常类型之定义了一个what的成员函数,该函数没有任何参数,返回值是一个指向C风格字符串的const char * 该字符串的目的是提供关于有些异常的信息,返回的内容如果异常类型有一个初始值,则what返回该字符串,对于没有初始值的异常类型来说,what返回的内容由编译器决定
85 throw 和 catch也能传递异常信息,不过这部分在书上没有体现
86 用实参初始化函数的形参
87 函数返回类型可以使指向数组或者是函数的指针
88 cmath下的 abs函数可以算绝对值
89 局部静态对象 p185 直到程序终止才被销毁
90 函数的名字必须在使用之前声明,类似于变量
91 当形参是引用类型时,对应的实参被引用传递,引用的形参是它对应实参的别名
92 当执行指针拷贝操作时,拷贝的是指针的值,拷贝之后,两个指针是不同的指针
93 建议使用引用类型的形参代替指针
94 如果函数无须改变引用形参的值,最好将其声明为常量引用
95 当用实参初始化形参时会忽略掉形参的顶层const,换句话说就是形参的顶层const被忽略掉了
96 如果想调用引用版本的reset 只能使用Int类型的对象,而不能使用字面值,求值结果为int的表达式
97 允许字面值初始化常量引用
98 使用引用而非常量引用会极大限制函数所能接受的函数类型 ,正如我们不能把const对象,字面值或者需要类型转换的对象传递给普通的引用形参p192
99 非常量引用,给人的感觉就是程序可以修改实参的内容,并且限制了传入的数据类型
100 数组形参
const int ia[] 相当于 const int *ia
101 显式传递一个表示数组大小的形参,用于对ia元素的访问 p195
102 形参是对数组的引用,void print (int &arr)[10]
103 char **argv argv是指向C风格字符串指针的指针 p197
char *argv[] argv是一个数组,指向C风格字符串的指针
104 可变参数模板(调用 initializer_list)p198
initializer_list的对象中的元素永远都是常量值,我们无法改变其对象中元素的值
如果想在initialzer_list中传入不同数量的值,那么需要把序列放在一个花括号中
105 省略符形参只能出现在形参列表的最后一个位置 p199
106
107 没有返回值的return 只能用在返回类型是void的函数中
108 void函数expression必须是返回另一个返回void的函数
109 return的返回值类型必须和函数的返回值类型相同,或者能隐式类型转换