第1章 第一个C++程序 1
1.1像程序员那样思考 1
1.2 C++有什么与众不同之处 5
1.3建立C++程序 6
1.4安装C++编译器 8
1.5前进到下一行 13
1.6保存数据:C++变量 15
1.7数据类型简介 16
1.8变量名和关键字 23
1.9小结 24
第2章 判断,再判断 26
2.1数据类型 26
2.2程序中的判断 27
2.3循环语句 34
2.4 C++中的真与假 39
2.5递增操作符 40
2.6语句与表达式 41
2.7布尔(短路)逻辑 42
2.8 math库简介 45
2.9小结 50
第3章 一专多能的for语句 52
3.1用于计数的循环 52
3.2 for循环简介 53
3.3 for语句用法示例 54
3.4 for语句的复合语句语法 57
3.5临时声明循环变量 58
3.6它山之石:Basic语言中的for语句 62
3.7小结 63
第4章 函数——分工与合作 64
4.1函数的概念 64
4.2函数的基本使用套路 65
4.3局部变量和全局变量 72
4.4递归函数 74
4.5游戏,更多的游戏 88
4.6小结 90
第5章 数组——都给我排好队 92
5.1初识C++数组 92
5.2数组初始化 93
5.3从零开始的下标 94
5.4字符串和字符串数组 101
5.5经验之谈 111
5.6二维数组——矩阵 112
5.7小结 113
第6章 指针——我知道数据在哪里 114
6.1指针到底是什么 114
6.2指针的概念 114
6.3声明和使用指针 116
6.4 swap——另一个使用指针的函数 122
6.5指针运算 127
6.6指针与数组处理 129
6.7小结 132
第7章 字符串——分析文本 134
7.1字符串的存储方式 134
7.2字符串的声明和初始化 136
7.3字符串处理函数 137
7.4读取字符串输入 141
7.5单个字符与字符串 147
7.6 C++中的string类型 150
7.7 string类型上的其他操作 154
7.8小结 155
第8章 文件——电子存储 157
8.1文件流对象简介 157
8.2引用磁盘文件 159
8.3文本文件与二进制文件 164
8.4二进制操作简介 166
8.5小结 173
第9章 一些高级编程技术 175
9.1命令行参数 175
9.2函数重载 179
9.3 do-while循环 183
9.4 switch-case语句 184
9.5多模块 185
9.6异常处理:出问题找我 188
9.7小结 191
第10章C++Ox的新功能 193
10.1 C++0x功能概述 193
10.2 long long类型 194
10.3基于范围的for 203
10.4 auto和decltype关键字 208
10.5 nullptr关键字 209
10.6强类型枚举 210
10.7纯字符串字面值 217
10.8小结 218
第11章 进入类的世界——Fraction 类 220
11.1面向对象:准智能数据类型 220
11.2 point:一个简单的类 222
11.3 private关键字:成员专用(保护数据) 224
11.4 Fraction类简介 228
11.5内嵌函数 230
11.6寻找最大公约数 231
11.7寻找最小公倍数 232
11.8小结 242
第12章 构造器——你的地盘你做主 244
12.1构造器简介 244
12.2多个构造器(重载) 245
12.3仅限C++0x:在类声明里初始化成员 246
12.4默认构造器 247
12.5仅限C++0x:代理构造器 249
12.6仅限C++0x:统一的初始化语法 250
12.7引用变量和输入参数(&) 255
12.8副本构造器 257
12.9从字符串到分数的构造器 261
12.10小结 263
第13章 操作符函数:对象也运算 265
13.1类操作符函数简介 265
13.2声明操作符函数为全局函数 267
13.3用引用来提高效率 269
13.4操作符函数的重载 277
13.5类赋值操作符 277
13.6“等于”比较操作符函数 278
13.7类与流:operator〈〈函数 279
13.8仅限C++0x:用户定义字面值 284
13.9小结 286
第14章 动态内存和string类 289
14.1动态内存:new关键字 289
14.2对象和new关键字 290
14.3为多个数据分配内存 292
14.4类的析构器 295
14.5深复制和副本构造器 300
14.6 this关键字 301
14.7再论赋值操作符 302
14.8编写字符串合并函数 304
14.9小结 308
第15章 两个完整的OOP编程示例 310
15.1链表简介 310
15.2汉诺塔动画版 321
15.3小结 328
第16章STL库——让编程不再困难 330
16.1 list模板简介 330
16.2设计RPN计算器 338
16.3尖括号的正确解释 346
16.4小结 346
第17章 继承——推陈出新 348
17.1继承方式 348
17.2 FloatFraction类存在的问题 352
17.3仅限C++0x:继承基类的构造器 353
17.4 protected成员 356
17.5对象包含 357
17.6深思熟虑的继承方案 359
17.7小结 361
第18章 多态——让对象独立自主 363
18.1 FlaotFraction类的另一种实现办法 363
18.2虚函数简介 364
18.3仅限C++0x:必须明确地进行覆盖 369
18.4纯虚函数和其他抽象概念 370
18.5抽象类和接口 371
18.6面向对象与输入和输出流 372
18.7写在最后 377
18.8结束语 378
18.9小结 379
附录A操作符 381
A.1范围操作符 383
A.2 sizeof操作符 384
A.3老式和新式的强制类型转换 384
A.4整数除法与浮点数除法 385
A.5位操作符(&、|、^、~、〈〈和〉〉) 386
A.6条件操作符 386
A.7赋值操作符 387
A.8并置操作符 387
附录B 数据类型 388
B.1数据类型的精度 389
B.2数值型字面值的数据类型 389
B.3字符串字面值和转义序列 390
B.4带符号整数的二进制补码 391
附录C语法汇总 393
C.1基本表达式 393
C.2基本语句 394
C.3控制结构和分支语句 394
C.4变量声明 399
C.5函数声明 401
C.6类声明 402
C.7枚举类型声明 403
附录D预处理器指令 405
D.1 #define指令 405
D.2##操作符(合并) 406
D.3 defined函数 406
D.4 #elif指令 407
D.5 #endif指令 407
D.6 #error指令 407
D.7 #if指令 408
D.8 #ifdef指令 408
D.9 #ifndef指令 409
D.10 #include指令 409
D.11 #line指令 410
D.12 #undef指令 410
D.13预定义常数 410
附录E ASCII编码 411
附录F标准库函数 414
F.1字符串(C字符串)函数 414
F.2数据转换函数 415
F.3单字符函数 415
F.4数学函数 416
F.5随机函数 417
F.6时间函数 417
F.7 strftime函数的输出格式 419
附录G I/O流对象和类 421
G.1控制台流对象 421
G.2 I/O流的处理符 422
G.3输入流函数 423
G.4输出流函数 423
G.5文件I/O函数 423
附录HSTL类和对象 426
H.1 STL库string类 426
H.2 〈list〉模板 428
H.3 〈stack〉模板 429
附录I术语表 431