2015年5月11日 星期一 19:59
第1章 快速入门
第一部分 基本语言 第2章~第8章
第2章 变量和基本类型
- 基本内置类型,整型(整数,字符和布尔值),浮点型(float,double,long double),有符号/无符号类型
- 字面值常量
- 变量,左值和右值
- 变量名,定义对象,变量初始化规则
- 声明和定义
- 名字的作用域
- const限定符,只读类型,而不是英文单词常量的意思。
- 引用,引用和指针的区别?
- typedef
- 枚举
- 类类型
第3章 标准库类型
- 命名空间的using声明
- 标准库string类型
- string对象的定义和初始化
- string对象的读写
- string对象的操作
- string对象中字符的处理
- 标准库vector类型,定义和初始化,vector对象的操作
- 迭代器简介
- vector <int>::iterator iter;
- vector <int> ivec;
- 标准库bitset类型,bitset对象的定义和初始化,bitset<32> bitvec;bitset对象上的操作
第4章 数组和指针
- 数组,数组的定义和初始化,数组操作
- 指针的引入
- 指针的定义和初始化
- 指针的操作
- 指针和引用的区别
- 使用指针访问数组元素
- 指针和const限定符
- C风格字符串,以'\0'空字符结束的字符数组。
- 创建动态数组,C中malloc,free,C++增加了new和delete。前者为函数,后者是操作符 。而且new不仅分配内存,而且真正的建立一个对象,而malloc只分配内存。
- 多维数组,本质是数组的数组
第5章 表达式
- 算术表达式,优先级由大到小:+/-(正负符号)>{*,/,%}>+/-(加减符号)
- 关系操作符和逻辑操作符,!>{<,<=,>,<=}>{==,!=}>&&>||
- 位操作符,~,<<,>>,&,^,|
- 赋值操作符,右结合性,低优先级
- 自增和自减操作符
- 箭头操作符,(*p).foo等价于p->foo
- 条件操作符 三元操作符,cond?expr1:expr2;
- sizeof操作符,返回值为size_t,无符号数
- 逗号操作符,从左到右计算,优先级最低
- 复合表达式的求值,优先级+结合性+求值顺序
- new和delete表达式,除了动态创建和释放数组,还可用于动态创建和释放单个对象
- 类型转换
- 何时发生隐式类型转换,混合类型表达式中,作为条件的表达式被转换为bool,
- 算术转换,整型提升,有符号与无符号的转换
- 其他隐式转换,指针转化 显式转换cast,因为需要覆盖通常的转换标准,所以需要显式使用强制类型转换。cast-name<type>(expression)
- dynamic_cast:支持运行时识别指针和引用所指的对象
- const_cast:转换掉表达式的const性质
- static_cast:编译器隐式执行的任何类型转换都可以由static_cast显式完成
- reinterpret_cast:通常为操作数的位模式提供较低层次的重新解释
第6章 语句
- 简单语句,表达式语句,空语句
- 声明语句
- 复合语句(块),用一对花括号括起来的语句序列,可为空
- 语句作用域
- if语句,悬挂else问题
- switch语句,switch语句中的控制流,break语句,default标号
- while语句
- for循环语句
- do while语句,以分号结束,和while语句不通
- break语句,结束最近的while,for,switch,将程序传下面
- continue语句,导致最近循环语句的迭代提前结束
- goto语句,函数内部无条件跳转
- try块和异常处理,throw表达式,try块,catch子句
try { //正常逻辑的代码,比如两个数相加 //如果相加失败,抛出runtime_error异常 } catch (runtime_error err) { //异常处理代码 } catch (CFileException* e) { //异常处理代码 } catch (CException* e) { //异常处理代码 }
- 使用预处理器进行调试
第7章 函数
- 函数的定义,函数返回类型,函数形参表
- 参数传递
- 非引用形参:通过复制对应的实参实现初始化,指针形参,const形参
- 引用形参:不复制参数,类似于传址
void swap(int &v1,int &v2) { int temp=v2; v2=v1; v1=temp; }
- vector和其他容器类型的形参
- 数组形参
- return语句
- return;返回类型为void的函数
- return expression;
- 函数声明
- 返回类型+函数名+形参列表----->函数原型
- 默认实参可以再函数声明可以再函数定义中指定,但在一个文件中,只能为一个形参指定默认实参一次
- 局部对象
- 自动对象:只有当定义它的函数被调用时才存在
- 静态局部对象:位于函数作用域内,生命期跨越这个函数,被多次调用,static
- 内联函数
- 避免函数调用的开销,inline
- 内联函数应该在头文件中定义,以便编译器能够在调用点内联展开函数的代码,仅有函数原型是不够的
- 类的成员函数
- 定义成员函数的函数体:可以在类内定义,也可以在类外定义
- 累的构造函数,constructor
- 重载函数
- 出现在相同作用域的两个函数,具有相同的名字和不同的形参,成为重载函数
- 指向函数的指针
bool ((*pf)(const string&,const string &); //用tepydef简化函数指针的定义 typedef bool (*cmpFcn)(const string&, const string &);
2015年5月13日 星期三 10:52
第8章 标准IO库
- 面向对象的标准库
- iostream 定义读写控制窗口的类型
- fstream 定义读写已命名的文件的类型
- sstream 定义用于读写存储在内存中的string对象
- 条件状态
- 输出缓冲区的管理,缓冲区内容被刷新,写入真实输出设备或文件的5种情况:
- 程序正常结束,作为main返回工作的一部分,将清空所有缓冲区
- 在一些不确定的情况下,缓冲区已经满了,在这种情况下,缓冲区将会在写下一个值之前刷新
- 用操作符显示地刷新缓冲区,例如行结束符endl
- 在每次输出操作执行完后,用unitbuf操纵符设置流的内部状态,从而情况缓冲区
- 将输出流与输入流关联(tie)起来,在这种情况下,在读输入流时将刷新其关联的输出缓冲区
- 文件的输入和输出,ifstream,ofstream,fstream
- 字符串流,istringstream,ostringstream,stringstream