第1章 走进C++ 1
1.1 C++编程语言概述 1
1.1.1 C++的历史 1
1.1.2 C++的发展历程 2
1.1.3 C++的特性与使用场景 3
1.1.4 C++与C语言 3
1.2第一个C++程序 4
1.2.1 Hello,World! 4
1.2.2包含头文件 4
1.2.3 main函数 5
1.2.4打印字符串 5
1.3小结 6
1.4知识拓展 6
1.4.1 C++开发社区 6
1.4.2学习建议与资源 6
第2章 搭建C++开发环境 7
2.1下载并安装Visual Studio 2017 7
2.1.1下载Visual Studio 2017 7
2.1.2安装与配置Visual Studio 2017 9
2.2编译运行第一个程序 12
2.3调试 17
2.4小结 18
2.5知识拓展 19
2.5.1设置系统路径 19
2.5.2其他C++IDE简介 20
第3章 C++基础语法 22
3.1基本内置类型 22
3.1.1整型 23
3.1.2字符型 27
3.1.3浮点型 31
3.1.4布尔型 32
3.2常量与变量 33
3.2.1字面值常量 33
3.2.2变量 37
3.2.3变量初始化 40
3.2.4 const常量 41
3.2.5 typedef 42
3.3操作符 43
3.3.1算术操作符 44
3.3.2关系操作符 45
3.3.3逻辑操作符 47
3.3.4位操作符 49
3.3.5自增自减操作符 51
3.3.6赋值操作符 52
3.3.7条件操作符 54
3.3.8逗号操作符 56
3.3.9操作符优先级 57
3.4类型转换 60
3.4.1隐式转换 60
3.4.2显式转换 63
3.5注释 64
3.5.1单行注释 64
3.5.2成对注释 65
3.6头文件与预处理器简介 66
3.6.1头文件与链接 66
3.6.2宏 70
3.6.3条件编译 73
3.7小结 76
3.8知识拓展 77
3.8.1二进制复习 77
3.8.2 ##和# 78
第4章 流程控制与语言结构 80
4.1简单语句 80
4.1.1空语句 80
4.1.2作用域和块 82
4.1.3简单语句与复合语句 84
4.2条件控制语句 85
4.2.1 if语句 85
4.2.2 switch语句 90
4.3循环控制语句 96
4.3.1 while语句 97
4.3.2 do…while语句 97
4.3.3 for语句 99
4.4跳转语句 102
4.4.1 break语句 102
4.4.2 continue语句 104
4.4.3 goto语句 105
4.5小结 106
4.6知识拓展 107
4.6.1死循环 107
4.6.2复合语句的作用域 108
4.6.3多文件的作用域问题 109
第5章 vector与字符串 110
5.1 vector 110
5.1.1 vector的创建和初始化 110
5.1.2 vector的遍历 111
5.1.3 vector的其他操作 112
5.2 string字符串 115
5.2.1 string的创建和初始化 115
5.2.2 string的读写 116
5.2.3 string的基本操作 118
5.2.4 string的比较 120
5.2.5 string的连接 121
5.3小结 122
5.4知识拓展 122
第6章 数组与指针 126
6.1数组 126
6.1.1数组的创建和初始化 126
6.1.2数组的操作 128
6.2指针 130
6.2.1使用指针遍历数组 130
6.2.2指针的概念与理解 130
6.2.3指针的创建与初始化 132
6.2.4指针的基本操作 133
6.2.5指针的算术操作 135
6.2.6 const指针 137
6.2.7指针的数组和数组的指针 138
6.2.8指针的指针 141
6.2.9 const cast与reinterpret_cast 142
6.3动态数组 143
6.3.1使用malloc()和free()动态分配内存 143
6.3.2使用new和delete动态分配内存 145
6.4多维数组 146
6.4.1多维数组的创建与初始化 146
6.4.2多维数组的遍历 147
6.4.3多维数组与数组 148
6.5引用 150
6.5.1引用的使用 150
6.5.2引用与指针的区别 151
6.5.3 const引用 152
6.6小结 153
6.7知识拓展 153
6.7.1 C风格字符串 153
6.7.2栈与堆 154
6.7.3动态多维数组 154
第7章 函数 157
7.1函数简介 157
7.1.1函数的定义 157
7.1.2函数调用 158
7.1.3函数的作用域 159
7.1.4参数 162
7.1.5返回值 163
7.1.6静态局部对象 165
7.2参数传递 166
7.2.1按值传递 166
7.2.2指针传递 167
7.2.3引用传递 169
7.2.4 const参数 171
7.2.5数组参数 172
7.2.6 main()函数的参数 174
7.3函数返回值 175
7.3.1返回值或对象 175
7.3.2返回引用 176
7.3.3返回指针 177
7.3.4 main()函数的返回值 178
7.4函数声明 178
7.4.1函数声明与函数定义 178
7.4.2默认参数 181
7.4.3内联函数 182
7.5函数重载 183
7.5.1函数重载的定义 184
7.5.2重载解析简介 187
7.6函数指针 190
7.6.1函数指针的创建和初始化 190
7.6.2函数指针的应用 191
7.6.3函数指针作为参数 193
7.6.4函数指针作为返回值 195
7.7小结 195
7.8知识拓展 196
7.8.1递归函数 196
7.8.2可变参数 199
第8章 C++面向对象编程入门 201
8.1类的概念 201
8.1.1数据抽象 201
8.1.2封装 204
8.1.3继承和多态 205
8.2类的定义 205
8.2.1成员变量 206
8.2.2成员函数 207
8.2.3构造函数 209
8.2.4创建对象 209
8.2.5 this指针 213
8.2.6类和结构体的区别 215
8.3构造函数 217
8.3.1默认构造函数 217
8.3.2重载构造函数 218
8.3.3初始化列表 219
8.4析构函数 223
8.4.1析构函数的语法 223
8.4.2动态分配对象内存 224
8.5类的作用域 226
8.5.1作用域操作符 226
8.5.2名字查找 228
8.6类的静态成员 231
8.6.1类的静态成员变量 231
8.6.2类的静态成员函数 233
8.6.3类的常量静态成员 234
8.7继承 236
8.7.1什么是继承? 236
8.7.2继承实例 236
8.7.3 Is-a和Has-a 238
8.7.4派生类与基类的转换 240
8.7.5继承下的构造析构函数 243
8.8访问控制 244
8.8.1用户 244
8.8.2访问控制和封装 245
8.8.3修饰成员的访问控制符 245
8.8.4修饰基类的访问控制符 247
8.9小结 250
8.10知识拓展 251
8.10.1类的大小 251
8.10.2多重继承 254
8.10.3显式构造函数 256
8.10.4可变数据成员 257
第9章 C++面向对象编程进阶 260
9.1复制控制 260
9.1.1复制构造函数 260
9.1.2合成的复制构造函数 262
9.1.3重载赋值操作符 267
9.1.4禁止复制 272
9.2虚函数与多态 273
9.2.1虚函数 273
9.2.2函数隐藏 277
9.2.3纯虚函数 279
9.2.4虚析构函数 281
9.2.5 dynamic-cast 284
9.3操作符重载 286
9.3.1操作符重载的一般规则 286
9.3.2算术操作符 290
9.3.3关系操作符 292
9.3.4类型转换操作符 294
9.3.5自增自减操作符 295
9.4友元 299
9.4.1友元类 299
9.4.2友元函数 301
9.4.3友元与继承 302
9.5小结 304
9.6知识拓展 304
9.6.1虚函数的实现 304
9.6.2使用private关键字修饰构造函数 307
第10章 C++输入输出流 309
10.1标准I/O库概况 309
10.2标准输入输出流 310
10.2.1 getline()函数 310
10.2.2条件状态 311
10.3文件流 313
10.3.1文件流的使用 313
10.3.2文件模式 317
10.4字符串流 319
10.5输入输出操作符重载 322
10.6小结 325
10.7知识拓展 325
第11章 模板简介 327
11.1类模板 327
11.2函数模板 334
11.3小结 339
11.4知识拓展 340
11.4.1模板特化 340
11.4.2多维vector 344
第12章 标准模板库(STL) 346
12.1容器概论 346
12.1.1迭代器 346
12.1.2容器元素的条件 349
12.1.3一些共通的操作 351
12.2 vector 356
12.2.1 vector的其他操作 357
12.2.2 vector的应用实例 360
12.3 list 364
12.3.1链表和数组 364
12.3.2 list的操作 367
12.3.3 list的应用实例 369
12.4 deque 371
12.5 string 375
12.5.1构造string的其他方法 375
12.5.2 string的其他操作 376
12.6 pair 380
12.6.1 pair的初始化 380
12.6.2 pair的操作 381
12.7 map 382
12.7.1 map的操作 383
12.7.2 map的应用实例 385
12.8 set 388
12.8.1 set的操作 388
12.8.2 set的应用实例 389
12.9算法 392
12.9.1只读算法 392
12.9.2排序算法 393
12.9.3函数对象 395
12.10小结 398
12.11知识拓展 399
第13章 其他语法特性 403
13.1异常处理 403
13.1.1异常处理的语法 403
13.1.2标准异常 407
13.1.3异常对象 408
13.1.4异常处理的注意事项 411
13.2命名空间 412
13.2.1命名空间的定义 412
13.2.2特殊命名空间 418
13.3枚举 420
13.3.1枚举简介 421
13.3.2枚举成员初始化 423
13.4小结 424
13.5知识拓展 424
第14章 C++11新特性介绍 428
14.1类型推导 428
14.1.1 auto关键字 428
14.1.2 decltype关键字 430
14.2区间迭代 432
14.3初始化列表 434
14.4 Lambda表达式 437
14.5小结 438
14.6知识拓展 438
第15章 实用开发技巧 444
15.1 Visual Studio调试技巧 444
15.1.1调试指令 444
15.1.2条件断点 446
15.1.3手动查看变量 448
15.1.4调用栈 448
15.1.5内存查看 449
15.2调试方法论 451
15.2.1静态检查 451
15.2.2科学的调试方法 454
15.3重构 457
15.3.1重构的定义 458
15.3.2重构实例 458
15.4小结 463
15.5知识拓展 464