内容简介
第1章 面向对象基础
1.1程序设计范型
1.2面向对象的基本概念
1.2.1对象和类
1.2.2封装和信息/实现隐藏
1.2.3接口、实现和消息传递
1.2.4继承
1.2.5多态性
1.2.6类之间的关系
1.3面向对象程序的特点
1.4面向对象方法发展简史
1.5小结
1.6习题
第2章C++语言概览
2.1 C++语言的特点
2.1.1 C++的发展和标准化
2.1.2 C++的特点
2.2第一个C++程序
2.2.1程序基本结构
2.2.2程序的编译和运行
2.3输入和输出
2.3.1标准输入输出
2.3.2注释
2.4集成开发环境的使用
2.4.1使用IDE开发C++程序
2.4.2 Code::Blocks使用示例
2.5 C++语言特性概览
2.6小结
2.7习题
第3章C++语言基础
3.1基本内置类型
3.1.1算术类型
3.1.2带符号和无符号类型
3.1.3字面值常量
3.1.4数据的输入和输出
3.2变量和常量
3.2.1变量定义
3.2.2标识符
3.2.3初始化
3.2.4赋值
3.2.5类型转换
3.2.6变量声明
3.2.7名字的作用域
3.2.8 const对象
3.2.9常量表达式和constexpr
3.2.10 auto和decltype
3.3运算符和表达式
3.3.1基本概念
3.3.2算术运算符
3.3.3关系和逻辑运算符
3.3.4赋值运算符
3.3.5自增和自减
3.3.6位运算符
3.3.7 sizeof运算符
3.3.8条件运算符
3.3.9逗号运算符
3.3.10类型转换
3.4语句
3.4.1简单语句和复合语句
3.4.2声明语句
3.4.3 if语句
3.4.4 switch语句
3.4.5 while语句
3.4.6 for语句
3.4.7 do-while语句
3.4.8 break和continue语句
3.4.9 goto语句
3.5编程示例:显示素数
3.6小结
3.7习题
第4章 复合类型
4.1指针和引用
4.1.1指针
4.1.2 new和delete
4.1.3引用
4.1.4右值引用
4.1.5 const限定指针和引用
4.2结构体、联合和枚举
4.2.1结构体
4.2.2联合
4.2.3枚举
4.3内置数组
4.3.1定义和初始化数组
4.3.2访问数组元素
4.3.3数组与指针
4.3.4字符数组和C风格字符串
4.4标准库类型string
4.4.1定义和初始化string对象
4.4.2 string对象上的操作
4.4.3处理string对象中的字符
4.5标准库类型vector
4.5.1定义和初始化vector
4.5.2向vector中添加元素
4.5.3访问vector中的元素
4.6迭代器
4.7编程示例:文件数据处理
4.7.1算法和数据结构
4.7.2文件读写
4.7.3字符串流
4.7.4完成的程序
4.8小结
4.9习题
第5章 函数
5.1函数基础
5.1.1函数定义
5.1.2函数调用
5.1.3函数声明
5.1.4递归函数
5.2参数传递
5.2.1按值传递
5.2.2按引用传递
5.2.3参数传递方式的选择
5.2.4数组参数
5.2.5 main()函数的参数
5.2.6不定个数的参数
5.3返回类型和return语句
5.3.1返回值
5.3.2返回引用
5.3.3返回列表
5.3.4 main()函数的返回值
5.3.5尾置返回类型
5.4函数重载
5.4.1重载函数
5.4.2重载函数的调用
5.4.3重载函数的判断
5.4.4重载函数解析
5.5特殊用途的函数特征
5.5.1默认实参
5.5.2 inline函数
5.5.3 constexpr函数
5.6函数指针
5.6.1定义函数指针
5.6.2使用函数指针
5.6.3函数指针的数组
5.6.4函数指针形参
5.7作用域和存储类别
5.7.1作用域
5.7.2存储类别和存储空间分配
5.8 namespace
5.8.1命名空间的定义
5.8.2命名空间成员的使用
5.8.3标准命名空间std
5.9程序代码组织
5.9.1声明和头文件包含
5.9.2函数代码的组织
5.9.3命名空间的代码组织
5.9.4链接指示符:extern“C”
5.10设计高质量的函数
5.10.1创建函数的理由
5.10.2函数的命名
5.10.3如何使用函数的参数
5.10.4设置函数的返回值
5.11小结
5.12习题
第6章 类和对象
6.1类的定义
6.1.1基本语言定义的ADT
6.1.2数据成员与成员函数
6.1.3数据成员的类内初始化
6.1.4成员函数的类外定义
6.1.5类代码的组织
6.1.6包含守卫
6.2访问控制和封装
6.2.1信息隐藏的必要性
6.2.2访问限定符
6.2.3类和对象
6.2.4 this指针
6.2.5访问器和修改器
6.2.6友元
6.2.7进一步的隐藏
6.3构造函数和析构函数
6.3.1构造函数
6.3.2构造函数初始化列表
6.3.3委托构造函数
6.3.4析构函数
6.4 const成员
6.4.1 const数据成员
6.4.2 const成员函数
6.4.3 mutable成员
6.4.4 const用法小结
6.5 static成员
6.5.1 static数据成员
6.5.2 static成员函数
6.5.3单件模式
6.5.4 static用法小结
6.6指向成员的指针
6.6.1数据成员的指针
6.6.2成员函数的指针
6.7类设计的例子
6.7.1类的设计
6.7.2类的UML表示法
6.7.3动态字符栈类
6.7.4字符串类
6.7.5单链表类
6.8小结
6.9习题
第7章 对象的初始化、复制和销毁
7.1对象的初始化和销毁
7.1.1对象的初始化
7.1.2默认构造函数
7.1.3隐式类型转换构造函数
7.1.4析构函数
7.1.5拷贝控制成员
7.2拷贝构造函数
7.3拷贝赋值运算符
7.4对象复制和移动
7.4.1移动构造函数和移动赋值运算符
7.4.2成员函数的复制和移动版本
7.4.3是否要定义拷贝控制成员
7.4.4交换操作
7.5编译器合成的成员函数
7.5.1 =delete
7.5.2 =default
7.6引用计数和写时复制技术
7.6.1内置指针实现引用计数
7.6.2智能指针
7.6.3智能指针实现引用计数
7.7小结
7.8习题
第8章 运算符重载
8.1基本概念
8.1.1运算符函数
8.1.2运算符重载的限制
8.1.3慎用运算符重载
8.2常用运算符的重载
8.2.1一元运算符
8.2.2二元运算符
8.2.3运算符函数的参数和返回类型
8.2.4非成员运算符和成员运算符
8.2.5重载输入输出运算符
8.2.6重载赋值运算符
8.3重载下标运算符
8.4用户定义的类型转换
8.4.1类型转换运算符
8.4.2自动类型转换可能引起的二义性问题
8.5函数调用运算符
8.5.1函数对象
8.5.2 lambda函数
8.5.3标准库定义的函数对象
8.5.4标准库函数bind
8.6小结
8.7习题
第9章 组合与继承
9.1组合——复用类的实现
9.1.1对象成员与组合关系
9.1.2对象成员的初始化
9.1.3复用类的实现
9.1.4指针成员与聚合关系
9.1.5指针成员与关联关系
9.2继承——复用类的接口
9.2.1继承的语法
9.2.2派生类成员的访问控制
9.2.3公有继承和私有继承
9.2.4派生类对象的创建和撤销
9.2.5继承与特殊成员
9.3派生类与基类的不同
9.3.1覆盖与同名隐藏
9.3.2扩充接口
9.4派生类向基类的类型转换
9.5组合与继承的选择
9.5.1组合的应用
9.5.2继承的应用
9.5.3组合的例子
9.6.4继承的例子
9.6多重继承
9.6.1多重继承引起的二义性
9.6.2虚基类
9.7小结
9.8习题
第10章 虚函数与多态性
10.1派生类向基类的类型转换
10.2虚函数
10.2.1声明虚函数
10.2.2虚函数的覆盖规则
10.2.3虚析构函数
10.2.4实现多态性的步骤
10.3动态绑定的实现
10.4抽象类
10.5 RTTI
10.5.1 dynamic cast与向下类型转换
10.5.2 typeid
10.6类层次设计的例子
10.6.1模仿钓鱼的例子
10.6.2零件库存管理的例子
10.7小结
10.8习题
第11章 模板与泛型编程
11.1函数模板
11.1.1函数模板的定义
11.1.2函数模板的实例化
11.1.3函数模板的重载
11.2类模板
11.2.1类模板的定义
11.2.2类模板的实例化
11.2.3类模板的成员函数
11.2.4模板的非类型参数
11.2.5类模板的静态数据成员
11.2.6类模板的友元
11.3模板的编译
11.3.1模板的代码组织
11.3.2显式实例化
11.4模板的更多特性
11.4.1模板的默认实参
11.4.2模板特化
11.4.3可变参数模板
11.5模板和代码复用
11.6小结
11.7习题
第12章 标准库容器和算法
12.1容器和算法概览
12.1.1容器概览
12.1.2容器操作概览
12.1.3算法概览
12.2顺序容器
12.2.1通用操作
12.2.2特有操作
12.2.3顺序容器适配器
12.2.4 string类的额外操作
12.3迭代器
12.3.1迭代器的运算
12.3.2与迭代器有关的容器操作
12.3.3反向迭代器
12.4关联容器
12.4.1 pair类型
12.4.2关联容器的操作
12.4.3 map
12.4.4 set
12.5泛型算法
12.5.1查找
12.5.2排序
12.6小结
12.7习题
第13章 异常处理
13.1异常处理机制
13.1.1抛出异常
13.1.2 try语句块
13.1.3异常处理流程
13.1.4异常对象
13.2捕获异常
13.2.1重新抛出异常
13.2.2捕获所有异常
13.2.3程序终止
13.3 noexcept说明
13.4标准异常
13.4.1自定义异常类型
13.4.2处理类类型的异常
13.5其他错误处理技术
13.5.1输入数据检验
13.5.2断言
13.5.3错误数据处理
13.5.4审慎使用异常
13.6小结
13.7习题
附录A C++关键字、运算符、标准库头文件表
参考文献