异常 |
- 异常处理
- 传统的错误处理
- 抛出异常
- 捕获异常
- 异常匹配
- 清理
- 标准异常
- 异常规格说明
- 异常安全
- 在编程中使用异常
- 使用异常造成的开销
|
单元测试 |
- 断言
- 一个简单的单元测试框架
- 自动测试
- TestSuite框架
- 测试套件
- 测试框架的源代码
|
调试技术 |
|
深入理解字符串 |
- 字符串的内部是什么
- 创建并初始化C++字符串
- 对字符串进行操作
- 字符串的查找
- 字符串的应用
|
输入输出流 |
- 为什么引入输入输出流
- 救助输入输出流
- 处理流错误
- 文件输入输出流
- 输入输出流缓冲
- 在输入输出流中定位
- 字符串输入输出流
- 输出流的格式化
- 操纵算子
- 输入输出流程序举例
- 国际化
|
深入理解模板 |
- 模板参数
- 有关函数模板的几个问题
- 模板特化
- 名称查找问题
- 模板编程中的习语
- 模板元编程
- 模板编译模型
|
通用算法 |
- 算法简介
- 函数对象
- STL算法目录
- 通用实用程序
- 创建自己的STL风格算法
|
通用容器 |
- 容器和迭代器
- 字符串容器
- 从STL容器继承
- 更多迭代器
- 基本序列容器:vector、list和deque
- 集合
- 堆栈
- 队列
- 优先队列
- 持有二进制位
- 关联式容器
- 将STL容器联合使用
- 清除容器的指针
- 创建自己的容器
- 对STL的扩充
- 非STL容器
|
运行时类型识别 |
- 运行时类型转换
- typeid 操作符
- 多重继承
- 合理使用RTTI
- TTI的机制和开销
|
多重继承 |
- 接口继承
- 实现继承
- 重复子对象
- 虚基类
- 名字查找问题
- 避免使用多重继承
- 扩充一个接口
|
设计模式 |
- 模式的概念
- 模式分类
- 单件
- 命令:选择操作
- 消除对象耦合
- 适配器模式
- 模板方法模式
- 策略模式:运行时选择算法
- 职责链模式:尝试采用一系列策略模式
- 工厂模式:封装对象的创建
- 构建器模式:创建复杂对象
- 观察者模式
- 多重派遣
|
并发 |
- 动机
- C++中的并发
- 定义任务
- 使用线程
- 创建有响应的用户界面
- 使用执行器简化工作
- 让步
- 休眠
- 优先权
- 共享有限资源
- 保证对象的存在
- 不恰当地访问资源
- 访问控制
- 使用保护简化编码
- 线程本地存储
- 终止任务
- 防止输入/输出流冲突
- 举例观赏植物园
- 阻塞时终止
- 中断
- 线程间协作
- 等待和信号
- 生产者-消费者关系
- 用队列解决线程处理的问题
- 广播
- 死锁
|