第1篇结构化程序设计
第1章计算机基础知识
1.1信息在计算机中的表示和存储
1.1.1如何用0和 1表示各种信息
1.1.2二进制和十六进制
1.1.3整数和小数的计算机表示
1.2计算机程序设计语言
1.2.1机器语言
1.2.2汇编语言
1.2.3高级语言
*1.3C++语言的历史
1.4小结
习题
第2章C++语言的基本要素
2.1C++的标识符
2.2C++的关键字
*2.3最简单的C++程序
2.4变量
2.4.1变量的定义
2.4.2变量的初始化
2.4.3变量的赋值
2.4.4常变量
2.5C++的数据类型
2.5.1C++基本数据类型
2.5.2数据类型自动转换
2.5.3用cin读入类型不同的变量
2.6常量
2.6.1整型常量
2.6.2实数型常量
2.6.3布尔型常量
2.6.4字符型常量
2.6.5字符串常量
2.6.6符号常量
2.7运算符和表达式
2.7.1算术运算符
2.7.2赋值运算符
2.7.3关系运算符
2.7.4逻辑运算符和逻辑表达式
2.7.5位运算符
2.7.6条件运算符
2.7.7sizeof运算符
2.7.8强制类型转换运算符
2.7.9逗号运算符
2.7.10运算符的优先级和结合性
*2.8注释
2.9小结
习题
目录
第3章C++语言的控制结构
3.1用 if 语句实现选择结构
3.2用switch语句实现选择结构
3.3用for语句实现循环结构
3.4用 while 语句实现循环结构
3.5用do…while 语句实现循环结构
3.6用break语句跳出循环
3.7continue语句
3.8goto语句
3.9使用freopen方便程序调试
3.10小结
习题
第4章函数
4.1函数的定义和调用
4.1.1函数的定义
4.1.2函数调用和return语句
4.1.3函数使用实例
4.2函数的声明
4.3main函数
*4.4函数参数的默认值
*4.5引用和函数参数的传递
4.5.1引用的概念
4.5.2引用作为函数的返回值
4.5.3参数传值
4.5.4参数传引用
4.5.5常引用
*4.6内联函数
*4.7函数的重载
*4.8库函数和头文件
4.9小结
习题
第5章数组
5.1一维数组
5.2数组的大小限制
5.3二维数组
5.4数组的初始化
5.5数组作为函数的参数
5.6数组越界
5.6.1什么是数组越界
5.6.2数组越界的后果
5.7小结
习题
第6章字符串
6.1字符串常量
6.2用字符数组存放的字符串
6.2.1用一维数组存放字符串
6.2.2用二维数组存放字符串
6.3字符串函数用法示例
*6.4用string 对象处理字符串
6.4.1定义string对象
6.4.2string对象的输入输出
6.4.3string对象的赋值
6.4.4string对象的运算
6.4.5string对象用法示例
6.5小结
习题
第7章指针
7.1指针的基本概念
7.2指针的作用
7.3指针的互相赋值
7.4指针运算
7.5空指针
7.6指针作为函数参数
7.7指针和数组
7.8常量指针
7.9字符串和指针
7.9.1普通字符串和指针的关系
7.9.2string对象和char * 指针的关系
7.9.3字符串操作库函数
7.10void 指针和内存操作库函数
7.11函数指针
7.11.1函数指针的定义
7.11.2函数指针的应用
7.12指针和动态内存分配
7.13指向指针的指针
7.14指针数组
7.15误用无效指针
7.16小结
习题
第8章自定义数据类型
8.1结构
8.1.1结构的定义和使用
8.1.2访问结构变量的成员变量
8.1.3结构变量的初始化
8.1.4结构数组
8.1.5指向结构变量的指针
8.1.6动态分配结构变量和结构数组
8.1.7结构变量或引用作为函数形参
8.2联合
8.3枚举类型
8.4用typedef定义类型
8.5小结
习题
第9章程序设计的基本思想
9.1枚举
9.2递归
9.3二分
9.4算法的时间复杂度及其表示法
9.5小结
习题
第10章C++程序结构
10.1全局变量和局部变量
10.2静态变量、自动变量和寄存器变量
10.3标识符的作用域
10.4变量的生存期
10.5预编译
10.5.1宏定义
10.5.2文件包含
10.5.3条件编译
10.6命令行参数
10.7多文件编程
10.7.1C++程序的编译过程
10.7.2多文件共享全局变量
10.7.3静态全局变量和静态全局函数
10.7.4多文件编程中的内联函数
10.7.5用条件编译避免头文件的重复包含
10.8小结
习题
第2篇面向对象的程序设计
第11章类和对象初步
11.1结构化程序设计的不足
11.2面向对象程序设计的概念和特点
11.3类的定义和使用
11.4类的示例程序剖析
11.5访问对象的成员
11.6类成员的可访问范围
11.7内联成员函数
11.8小结
习题
第12章类和对象进阶
12.1构造函数
12.1.1构造函数的概念和作用
12.1.2构造函数在数组中的使用
12.1.3复制构造函数
12.1.4类型转换构造函数
12.2析构函数
12.3构造函数、析构函数和变量的生存期
12.4静态成员变量和静态成员函数
12.5常量对象和常量成员函数
12.6成员对象和封闭类
12.7const成员和引用成员
12.8友元
12.8.1友元函数
12.8.2友元类
12.9this指针
12.9.1C++程序到C程序的翻译
12.9.2this指针的作用
12.10在多个文件中使用类
12.11小结
习题
第13章运算符重载
13.1运算符重载的概念和原理
13.2重载赋值运算符“=”
13.3浅复制和深复制
13.4运算符重载为友元函数
13.5实例——长度可变的整型数组类
13.6重载流插入运算符和流提取运算符
13.7重载强制类型转换运算符
13.8重载自增、自减运算符
13.9运算符重载的注意事项
13.10小结
习题
第14章继承与派生
14.1继承和派生的概念
14.2正确处理类的复合关系和继承关系
14.3protected访问范围说明符
14.4派生类的构造函数和析构函数
14.5多层次的派生
14.6包含成员对象的派生类
14.7公有派生的赋值兼容规则
14.8基类与派生类的指针的互相转换
14.9私有派生和保护派生
14.10派生类和赋值运算符“=”
14.11多重继承
14.11.1多继承的概念及其引发的二义性
14.11.2用“虚继承”解决二义性
14.12小结
习题
第15章多态与虚函数
15.1多态的基本概念
15.2多态的作用
15.3多态的实现原理
15.4关于多态的注意事项
15.5虚析构函数
15.6纯虚函数和抽象类
15.7小结
习题
第16章输入输出流
16.1流类
16.2标准流对象
16.3使用流操纵算子控制输出格式
16.4调用cout的成员函数
16.5cin的高级用法
16.5.1判断输入结束
16.5.2istream类的成员函数
16.6printf、scanf等C语言标准输入输出库函数
16.7小结
习题
第17章文件操作
17.1文件的概念
17.2C++文件流类
17.3文件的打开和关闭
17.4文件的读写
17.4.1文本文件的读写
17.4.2二进制文件的读写
17.4.3操作文件读写指针
17.5文本方式打开文件与二进制方式打开文件的区别
17.6小结
习题
第3篇泛型程序设计
第18章泛型程序设计与模板
18.1函数模板
18.2类模板
18.3类模板中的非类型参数
18.4类模板与继承
18.5类模板和友元
18.6类模板中的静态成员
18.7在多个文件中使用模板
18.8小结
习题
第19章标准模板库STL
19.1STL中的基本概念
19.1.1容器
19.1.2迭代器
19.1.3算法
19.1.4STL中的“大”、“小”和“相等”的概念
19.2顺序容器
19.2.1动态数组 vector
19.2.2双向链表list
19.2.3双向队列deque
19.3函数对象
19.4关联容器
19.4.1关联容器的预备知识: pair类模板
19.4.2multiset
19.4.3set
19.4.4multimap
19.4.5map
19.5容器适配器
19.5.1stack
19.5.2queue
19.5.3priority_queue
19.6STL算法分类
19.7不变序列算法
19.8变值算法
19.9删除算法
19.10变序算法
19.11排序算法
19.12有序区间算法
19.13string类详解
19.14bitset
19.15小结
习题
第4篇C++高级主题
第20章C++高级主题
20.1强制类型转换
20.2运行时类型检查
20.3智能指针auto_ptr
20.4C++异常处理
20.5名字空间
20.6C++11新特性管窥
20.6.1智能指针shared_ptr
20.6.2无序容器(哈希表)
20.6.3正则表达式
20.6.4Lambda表达式
20.7小结
习题
附录A魔兽世界大作业
参考文献