1.1小心错误的概念 1
1.2面向对象概念与C++ 1
1.2.1思维程序设计 1
第1章 面向对象的基本概念 1
1.2.2面向对象思维 2
1.3面向对象概念入门 2
1.3.1对象 2
1.3.2类 3
1.3.3信息 3
1.3.4继承 3
1.4程序的基本概念 4
2.1 Hello C++程序 5
第2章Hello C++! 5
2.2程序注解的使用 6
2.2.1什么是程序注解? 6
2.2.2区段注解 6
2.2.3单行注解 6
2.3载入头文件 7
2.4类的建立 7
2.4.1定义类 7
2.4.2定义属性 8
2.4.3定义方法 8
2.8信息—调用对象的方法 9
2.7建立对象 9
2.5数据的输出—cout对象 9
2.6 main()主程序 9
第3章 变量、数据类型与常量 11
3.1什么是变量 11
3.2数据类型 11
3.2.1整数 12
3.2.2浮点数 12
3.2.3字符 12
3.3给变量一个好名字—匈牙利命名法 13
3.4变量的输入与起始值设定 14
3.4.1变量的输入 14
3.6自定义常量 15
3.6.1常量 15
3.5变量的有效范围 15
3.4.2起始值的设定 15
3.6.2常量的自定义 16
3.6.3const常量 17
第4章 运算符 18
4.1名词解释 18
4.2指派运算符“=”的迷惑 18
4.3算术运算符 19
4.4比较运算符 19
4.5逻辑运算符 20
4.6++、--与sizeof运算符 23
4.7运算符的优先顺序 24
4.8.1自动类型转换的规则 25
4.8运算式中的类型转换 25
4.8.2强制类型转换 26
第5章 数据输出/输入与格式控制 27
5.1数据的输入—cin对象 27
5.2数据输出格式控制 28
第6章 流程控制 30
6.1判断式与循环 30
6.1.1判断式 30
6.1.2循环 30
6.2 if...elseif...else判断式 31
6.2.1 if判断式 31
6.2.2 if...else判断式 32
6.2.3 if...else if...else判断式 33
6.3 switch...case判断式 36
6.4 for循环 38
6.5 while循环 42
6.6 do...while循环 45
6.7 break、continue、goto语句 48
6.7.1 break语句 48
6.7.2 continue语句 49
6.7.3 goto语句 50
第7章 数组与字符串 53
7.1什么是数组 53
7.2一维数组的使用 53
7.2.1定义数组 53
7.2.4数组元素的存取 54
7.2.2设定起始值 54
7.2.3数组的储存 54
7.2.5小心出错 56
7.3二维数组的使用 56
7.3.1定义二维数组 56
7.3.2二维数组元素的存取 57
7.3.3二维数组的起始值设定 57
7.4多维数组 59
7.5字符串变量 60
第8章 指针 62
8.1变量的家 62
8.1.1变量住在 62
8.1.2 运算符 62
8.2.2指针的使用 64
8.2指针的定义与使用 64
8.2.1指针的定义 64
8.2.3起始值的设定 65
8.2.4将数据放进指针指向的地址里 66
8.2.5指针为何要定义数据类型 67
8.3指针的指针 67
8.4用new运算符设定指针起始值 69
第9章 函数 71
9.1函数与程序有什么关系? 71
9.2函数的建立 72
9.2.1函数的执行 72
9.2.4函数的原型定义与参数值的默认 73
9.2.2函数的建立 73
9.2.3函数的调用 73
9.3参数的传递 76
9.3.1传值调用(call by value) 77
9.3.2传址调用(call by address) 78
9.3.3传引用调用(call by reference) 80
9.3.4为何要有传地址与传引用 82
9.3.5到底哪一个好 82
第10章 指针与数组、字符串、函数的关系 83
10.1指针与数组 83
10.1.1VS指针 83
10.1.2指向数组的指针 88
10.2.1用指针定义字符串变量 89
10.2字符串数组 89
10.2.2储存字符串的数组 91
10.3指针、数组与函数 93
10.4指针、字符串与函数 95
第11章 动态内存的配置 97
11.1利用new动态定义数组的大小 97
11.1.1数组的遗憾 97
11.1.2动态定义数组大小 97
11.1.3释放内存 98
11.2 动态二维数组与指针的指针 99
第12章 软件革命—面向对象 104
12.1电脑的虚拟世界 104
12.2.2模拟世界的动态与静态 105
12.2面向对象思维如何模拟世界 105
12.2.1面向对象的抽象化 105
12.3面向对象系统的运作机制 106
第13章 类与对象 107
13.1数据隐藏 107
13.2建立类与对象 107
13.2.1类的建立 107
13.2.2对象的建立与使用 109
13.3存取权限的控制 111
13.3.1类成员的分级 111
13.3.2const的使用 113
13.4对象的生命期 116
13.4.1对象的产生—构造函数 117
13.4.2对象状态的改变 124
13.4.3对象的消失—析构函数 126
13.5类的成员 129
13.5.1对象成员VS类的成员 129
13.5.2静态属性 130
13.5.3静态成员函数 130
13.6指针与对象 132
13.6.1对象的指针 132
13.6.2动态配置对象内存 134
13.7对象参数的传递 136
13.7.1对象参数的传入与返回 136
13.7.2this指针的使用 138
13.8.1运算的多元性 141
13.8 类的运算 141
13.8.2重载“=”运算符 142
13.8.3重载“+”运算符 146
13.8.4重载“[]”运算符 149
13.8.5类型转换与类 149
13.9友元类与友元函数 153
13.9.1友元类 153
13.9.2友元函数 155
第14章 类继承与组合—程序代码的再利用 157
14.1继承的意义 157
14.1.1名词解释 157
14.1.4继承对系统发展的意义 158
14.1.2分类的角度 158
14.1.3遗传的角度 158
14.2 C++的继承机制 159
14.2.1 C++是怎样做到的 159
14.2.2继承的三种方式—public、protected、private 160
14.2.3属性与继承 165
14.2.4继承与成员函数 167
14.2.5继承与对象的初始值设定 170
14.2.6类成员的继承 176
14.2.7friend的继承 178
14.2.8基础类与衍生类的类型转换 179
14.3.1多重类的继承 181
14.3多重继承 181
14.3.2类的虚拟继承 185
14.4组合 189
14.4.1组合的意义与完成机制 189
14.4.2以对象变量建立组合关系 193
14.4.3以对象引用(指针)建立组合关系 196
第15章 信息一对象间的交谈 201
15.1信息的多态性(Polymorphism) 201
15.1.1信息在面向对象系统中的角色 201
15.1.2信息多态性的建立机制 202
15.2重载与再定义—静态的多态性 204
15.2.1函数的重载 204
15.3.1动态链接与继承 207
15.2.2函数的再定义 207
15.3动态链接的使用—动态的多态性 207
15.3.2 C++的动态链接机制—虚拟函数 208
15.3.3虚拟析构函数 214
15.3.4对象指针数组 215
第16章 模板(TEMPLATE) 219
16.1模板的概念 219
16.1.1链接列表 219
16.1.2模板类 223
16.2模板函数 227
16.3多参数模板 228
17.1简介数据流 231
17.1.1什么是数据流 231
第17章 数据流与文件的输出/输入 231
17.1.2数据流类 232
17.2数据流的控制 232
17.2.1数据流的格式控制 232
17.2.2格式标志 233
17.2.3计算符 235
17.2.4函数 236
17.2.5常用的输出/输入函数 237
17.2.6自定义类的输出/输入 239
17.2.7数据流的错误侦测 240
17.3.1 fstream类 242
17.3文件的输出/输入 242
17.3.2格式化文字模式的文件I/O 245
17.3.3二进制模式的文件I/O 247
17.3.4文件指针的使用 249
17.3.5利用文件储存对象 254
第18章 ANSI/ISO C++标准的新增语法 257
18.1 namespace 257
18.1.1为何要有namespace 257
18.1.2 namespace的定义与使用 257
18.2新的头文件载入方式 259
18.3执行时间类型信息—RTTI(Run-Time Type Information) 260
18.4类型转换 261
21.6 Document/View的基本结构 265
18.5 bool、mutable与explicit构造函数 267
18.6.2字符串对象的操作 269
18.6标准字符串类 269
18.6.1简介标准字符串类 269
18.7.1简介例外处理 273
18.7例外处理 273
18.7.2例外处理的机制 274
18.7.3函数的例外处理 275
18.7.4例外对象 278
18.7.5多重例外处理 280
18.7.6标准例外处理类 281
第19章 标准模板程序库(STANDARD TEMPLATE LIBRARY) 283
19.1认识STL 283
19.1.1什么是STL 283
19.2容器与指位器 284
19.2.1容器 284
19.2.2指位器 285
19.3序列容器 287
19.3.1vector 287
19.3.2deque 290
19.3.3list 293
19.4关联容器 296
19.4.1set与multiset 296
19.4.2map与multimap 299
19.5算法 302
19.5.1算法的介绍 302
19.5.2数据编辑算法 303
19.5.3搜寻算法 305
19.5.4比较算法 306
19.5.5排序相关算法 308
19.5.6计算算法 309
19.6函数对象 311
19.6.1函数对象的应用 311
19.6.2 STL提供的函数对象 312
19.6.3自定义函数对象 314
19.7适配器 316
19.7.1简介适配器 316
19.7.2stack容器 317
19.7.3queue容器 318
19.7.4priority_queue容器 320
19.7.5倒转指位器 322
19.7.6插入指位器 324
第20章 多文件程序的建立与图书管理系统范例 326
20.1建立多文件程序 326
20.1.1为何要建立多文件程序 326
20.1.2如何建立一个多文件程序 326
20.2图书管理系统的开发 328
20.2.1系统的开发过程 328
20.2.2图书管理系统的分析与设计 329
20.3图书管理系统的建立 335
20.3.1系统的结构 335
20.3.2主程序、Object与LibraryObject类 335
20.3.3 Librarian类 337
20.3.4 Book类 341
20.3.5 Reader类 342
20.3.6 Database类 344
第21章 窗口程序的基本概念 348
21.1窗口程序的运作机制 348
21.1.1事件、信息与窗口运作 348
21.2.1什么是Application Frameworks 349
21.1.2窗口的基本构造 349
21.2如何编写窗口程序 349
21.1.3资源的概念 349
21.2.2AF与面向对象 350
21.2.3MFC的类继承层次 350
21.3.2 Hello MFC程序范例 351
21.3.1建立窗口程序的基本概念 351
21.3 Hello MFC!—第一个窗口程序 351
21.3.3 CWndApp类与程序进入点 352
21.3.4窗口框架对象 352
21.4.1自定义窗口框架对象 355
21.4建立自定义窗口 355
21.4.2 MyFrame程序范例 356
21.4.3自定义窗口框架与资源文件的建立 357
21.4.4菜单的操作 358
21.5窗口信息处理与绘图 358
21.5.1窗口信息的传递与处理 358
21.5.2建立信息映射表与设备上下文的程序范例 360
21.5.4利用鼠标绘图 362
21.5.3信息映射表与回应函数的建立 362
21.5.5信息方框的使用与窗口的破坏 363
21.6.1什么是Document/View结构 365
21.6.2建立以Document/View为框架的窗口应用程序 366
21.6.3 Document/View的框架与建立过程 367
21.6.4文件模板类的应用 369
21.6.5 CView类的使用 370
21.6.6 CDocument类的使用 370
21.7 Document/View框架的应用 370
21.7.1窗口的重绘 370
21.7.2repaint程序范例 371
21.7.3 Document/View的运作机制 374
21.7.4窗口的重绘 375
第22章 菜单、工具栏、状态栏、加速键、图标 376
22.1菜单的建立 376
22.1.1简介菜单 376
22.1.2menu程序范例 377
22.1.3菜单的建立与设定 382
22.1.4菜单的切换 382
22.1.6修改系统菜单与建立弹出式菜单 388
22.2 UPDATE_COMMAND_UI信息 388
22.2.1什么是UPDATE_COMMAND_UI信息 388
22.2.2 COMMAND_UI程序范例 389
22.2.3 UPDATE_COMMAND_UI信息的接收与回应 391
22.2.4 U1元件的修改 391
22.3快捷键的建立 392
22.4.1工具栏、状态行与字符串表的使用 393
22.4.2 controlbar程序范例 393
22.4 工具栏、状态行与字符串表 393
22.4.3工具栏的建立 396
22.4.4状态行的建立 400
22.4.5字符串表的建立 403
22.5使用图标、位图与光标资源 403
22.5.1图标、位图与光标资源的用途 403
22.5.2resource程序范例 404
22.5.3图标资源的使用 406
22.5.4位图资源的使用 407
22.5.5鼠标光标资源的使用 407
22.6.1 painter的窗口界面 408
22.6建立painter的窗口界面 408
22.6.2 painter1程序内容 409
22.6.3 painter1的程序结构 413
22.6.4 painter1的自定义类说明 414
22.6.5控制工具栏的隐藏与显示 416
第23章 绘图的基本概念 417
23.1窗口的基本图形原理 417
23.1.1图形设备接口(Graphics Device Interface) 417
23.1.2设备上下文(Device Context) 417
23.1.3颜色的定义 418
23.1.4MFC的GDI类 418
23.1.6建立画刷对象 419
23.1.5建立画笔对象 419
23.2 CDC类的介绍 420
23.2.1 CDC类的衍生类 420
23.2.2 CDC类提供的形状绘制函数 420
23.3画笔、画刷与绘图模式的控制 422
23.3.1画笔与画刷的选取 422
23.3.2绘图模式的控制 423
23.4 painter2程序范例 424
23.4.1 painter2的绘图功能 424
23.4.2 painter2程序内容 425
23.4.3 painter2的程序结构 431
23.4.4 painter2的自定义类说明 431
23.4.5 MyView类所处理的信息 437
23.4.6动态链接的应用 441
第24章 DOCUMENT/VIEW结构的应用 442
24.1图形对象的重绘 442
24.1.1记录图形对象与窗口重绘的机制 442
24.1.2 painter3程序范例 443
24.1.3窗口重绘的机制 446
24.1.4 painter3的自定义类 446
24.1.5形状对象的重绘机制 448
23.2应用程序的文件储存 452
24.2.1MFC的文件储存机制 452
24.2.2 painter4程序范例 453
24.2.4 painter4的Serialize机制 464
24.2.3 painter4的自定义类 464
24.2.5 painter4的文件操作功能 466
第25章 对话框的使用 468
25.1对话框的种类 468
25.2对话框的建立 468
25.2.1对话框组成 468
25.2.2对话框资源与对话框对象 468
25.2.3简介控制项 469
25.3 Modal对话框的使用 469
25.3.1 painter5程序范例 469
25.3.2 painter5的自定义类 472
25.3.4 SWidthDlg对话框类 473
25.3.3 painter5的结构 473
25.3.5对话框对象的建立 476
25.4对话框的数据交换与检查机制 477
25.4.1 DDX与DDV 477
25.4.2 painter6程序范例 478
25.4.3数据交换与检查机制 479
25.4.4 DDX与DDV机制的建立 479
25.4.5 DDX与DDV函数的说明 480
25.5 Modelless对话框 481
25.5.1 painter7程序范例 481
25.5.2 painter7的自定义类 486
25.5.3数据交换机制 487
25.5.4 Modelless对话框的建立 487
25.5.5其他更改的部分 490