第1章 初识C++ 1
1.1 C++简介 1
1.2 C++的发展过程 1
1.3 C++和C的区别以及C++新增特性 1
1.3.1 C和C++的区别 1
1.3.2 C++新增特性 2
1.4 C++编译器版本 22
第2章 一个简单的C++入门程序 23
2.1 入门级的C++程序 23
2.2 输出语句的使用 24
2.3 std::介绍 25
2.4 iostream与iostream._h的区别 27
2.5 重名问题 27
第3章 C++数据类型和运算符 33
3.1 C++基本数据类型 33
3.2 布尔型变量 35
3.3 wchar_t双字节型变量 36
3.4 常量 38
3.5 枚举类型 39
3.6 C++的运算符和表达式概述 41
3.7 C++的类型转换 44
第4章 C++程序的流程控制语句 45
4.1 if(){}else{}选择结构 45
4.2 switch结构 52
4.3 for循环结构 58
4.4 while循环结构 60
4.5 do{}while{}循环结构 62
4.6 break流程转向控制语句 64
4.7 continue流程转向控制语句 66
4.8 goto流程转向控制语句 67
4.9 exit()程序终止函数 68
第5章 数组 70
5.1 数组的引入 70
5.2 一维数组 70
5.3 二维数组 72
5.4 字符数组 74
第6章 C++函数 89
6.1 函数的定义和使用 89
6.2 函数参数的传递 91
6.3 函数的返回值 94
6.4 变量作用域 95
6.4.1 局部变量 96
6.4.2 全局变量 96
6.4.3 全局变量和局部变量优先级 96
6.4.4 变量作用域示例程序 96
第7章 自定义数据类型——结构体、共用体、枚举 98
7.1 构造数据类型(自定义数据类型) 98
7.2 结构体 98
7.3 共用体 102
7.4 枚举 104
7.5 typedef定义类型 105
7.6 链表的提前预热 106
7.7 小结 107
第8章 面向对象 108
8.1 面向对象程序语言基本特征 108
8.2 类、对象和成员概念 109
8.3 类、对象和成员的使用方法及区别 110
8.4 公有属性 115
8.5 私有属性 117
8.6 类声明内外实现成员函数的区别 117
8.7 const成员函数 123
8.8 构造函数 125
8.8.1 C++构造函数的特点 125
8.8.2 C++构造函数声明 128
8.8.3 C++构造函数分类 129
8.9 析构函数 140
8.10 构造函数初始化列表 142
第9章 指针 147
9.1 什么是指针 147
9.2 指针的定义、初始化和访问 147
9.2.1 指针的定义 147
9.2.2 指针的初始化 148
9.2.3 指针的访问 148
9.2.4 指针使用的简单示例 149
9.3 指针和堆空间 151
9.3.1 C/C++程序的内存占用组成 151
9.3.2 C/C++堆和栈的区别 152
9.3.3 C/C++堆空间的分配和释放 153
9.4 const和指针 158
9.4.1 常量指针 158
9.4.2 指针常量 158
9.4.3 指向常量的常指针 158
9.4.4 指针和const关键字结合使用示例 158
9.5 指针运算 159
9.6 指针和数组 161
9.7 this指针 162
第10章 运算符重载 164
10.1 为什么要对运算符重载 164
10.2 哪些运算符可以用作重载 164
10.3 运算符重载语法 166
10.4 以友元方式重载运算符 168
10.5 运算符重载的一般规则 173
10.6 重载前置自加运算符 173
10.7 重载后置自加运算符 175
10.8 重载赋值运算符(=) 177
10.9 关系运算符号重载 179
10.10 重载自定义类的>>、<<运算符 182
10.11 函数调用运算符()重载 184
10.12 new和delete关键字重载 187
10.13 new[]数组和delete[]数组重载 190
10.14 下标运算符重载 193
第11章 继承 195
11.1 继承和派生 195
11.1.1 继承的基本概念 195
11.1.2 继承分类 195
11.1.3 继承的语法 196
11.1.4 C++派生类的构成 198
11.2 公有型、私有型和保护型的区别 198
11.2.1 公有继承方式 198
11.2.2 私有继承方式 200
11.2.3 保护继承方式 202
11.3 多重继承 204
11.4 继承的构造函数与析构函数 205
11.5 继承和重载的二义性问题 209
11.5.1 多重继承同函数名、同原型的二义性 209
11.5.2 多重继承同函数名、同原型不同二义性 211
11.5.3 单一继承重载和同名函数二义性 213
11.5.4 多重继承中具有共同基类的二义性问题 215
11.5.5 使用虚基类解决共同基类的二义性 219
第12章 虚函数和多态 226
12.1 虚函数和多态的关系 226
12.2 对象引用调用虚函数 232
12.3 虚函数中调用其他虚函数 235
12.4 含虚函数的派生类的构造函数和析构函数 239
12.5 不要在构造函数和析构函数中调用虚函数 245
12.6 虚函数与虚函数表 248
12.6.1 普通非派生C++类内存模型 248
12.6.2 含有数据结构体变量的普通非派生C++类内存模型 251
12.6.3 普通派生C++类内存模型 255
12.6.4 含有虚函数的C++类内存模型 257
12.6.5 含有多个虚函数的C++类内存模型 263
12.6.6 含有虚函数多重继承派生类内存模型 268
12.7 纯虚函数 272
12.7.1 纯虚函数的概念 272
12.7.2 纯虚函数定义 272
12.7.3 纯虚函数实例 272
第13章 C++字符串 276
13.1 C风格字符串 276
13.2 string型字符串的常用操作 279
13.2.1 string型字符串的赋值 282
13.2.2 string型字符串的连接 285
13.2.3 string型字符串复制到char类型数组 286
13.2.4 string型字符串的插入 287
13.2.5 string型字符串的删除 291
13.2.6 string型字符串的查找 292
13.2.7 string型字符串的比较 294
13.2.8 判断string型字符串是否为空 296
13.2.9 将string型字符串转换为char型字符串 297
13.3 string数组 299
第14章 文件操作 301
14.1 常用文件操作的相关类 301
14.2 打开文件(Open a File) 301
14.3 关闭文件 303
14.4 状态标志符的验证 304
14.5 获得和设置流指针 304
14.6 向文本文件输出和输入操作 305
14.7 二进制文件的访问 310
14.8 二进制文件的应用示例 313
第15章 模板 319
15.1 模板的概念 319
15.2 函数模板的写法 319
15.3 模板类的写法 321
15.4 模板类的实例化 321
15.5 模板类的非类型形参 323
15.5.1 模板类的非类型形参是常数 323
15.5.2 模板类的非类型参数是指针 325
15.5.3 模板类的非类型参数是引用 328