标题：Visual C++ 2010入门经典（第5版）
基本信息
  原书名： Ivor Horton's Beginning Visual C++ 2010
原出版社： Wrox
作者： (美)Ivor Horton
译者： 苏正泉 李文娟
出版社：清华大学出版社
ISBN：9787302239994
出版日期：2010 年12月
版次：5-1
内容简介
作者ivor horton采用了容易理解的讲授方法，并提供了详尽的示例，帮助读者迅速地成为一名优秀的c++编程人员。《visual c++ 2010入门经典(第5版)》针对visual c++ 2010版本进行了全面更新，介绍了最新的开发环境和如何使用visual c++构建现实世界中的应用程序。拥有本书，您就迈向了通往使用两种c++版本编写应用程序的成功之路，并成为一名优秀的c++编程人员。
目录
第1章 使用visual c++ 2010编程 1
1.1 .net framework 1
1.2 clr 2
1.3 编写c++应用程序 3
1.4 学习windows编程 4
1.4.1学习c++ 4
1.4.2 c++标准 5
1.4.3属性 5
1.4.4控制台应用程序 5
1.4.5 windows编程概念 6
1.5 集成开发环境简介 7
1.5.1编辑器 8
1.5.2编译器 8
1.5.3链接器 8
1.5.4库 8
1.6 使用ide 8
1.6.1工具栏选项 9
1.6.2可停靠的工具栏 10
1.6.3文档 11
1.6.4项目和解决方案 11
.1.6.5 设置visual c++ 2010的选项 23
1.6.6创建和执行windows应用程序 23
1.6.7创建windows forms应用程序 26
1.7 小结 27
1.8 本章主要内容 28
第2章 数据、变量和计算 29
2.1 c++程序结构 29
2.1.1 main()函数 36
2.1.2程序语句 36
2.1.3空白 38
2.1.4语句块 38
2.1.5自动生成的控制台程序 39
2.2 定义变量 40
2.2.1命名变量 40
2.2.2声明变量 41
2.2.3变量的初始值 42
2.3 基本数据类型 42
2.3.1整型变量 43
2.3.2字符数据类型 44
2.3.3整型修饰符 45
2.3.4布尔类型 46
2.3.5浮点类型 46
2.3.6字面值 47
2.3.7定义数据类型的同义词 48
2.3.8具有特定值集的变量 49
2.4 基本的输入/输出操作 50
2.4.1从键盘输入 50
2.4.2到命令行的输出 50
2.4.3格式化输出 51
2.4.4转义序列 52
2.5 c++中的计算 54
2.5.1赋值语句 54
2.5.2算术运算 55
2.5.3计算余数 59
2.5.4修改变量 60
2.5.5增量和减量运算符 60
2.5.6计算的顺序 63
2.6 类型转换和类型强制转换 64
2.6.1赋值语句中的类型转换 65
2.6.2显式类型转换 65
2.6.3老式的类型强制转换 66
2.7 auto关键字 66
2.8 查看类型 67
2.9 按位运算符 67
2.9.1按位and运算符 68
2.9.2按位or运算符 69
2.9.3按位eor运算符 71
2.9.4按位not运算符 71
2.9.5移位运算符 71
2.10 lvalue和rvalue 73
2.11 了解存储时间和作用域 74
2.11.1自动变量 74
2.11.2决定变量声明的位置 76
2.11.3全局变量 77
2.11.4静态变量 80
2.12 名称空间 80
2.12.1声明名称空间 81
2.12.2多个名称空间 82
2.13 c++/cli编程 84
2.13.1 c++/cli特有的基本数据类型 84
2.13.2命令行上的c++/cli输出 87
2.13.3 c++/cli特有的功能—— 格式化输出 88
2.13.4 c++/cli的键盘输入 91
2.13.5使用safe_cast 92
2.13.6 c++/cli枚举 92
2.14 查看c++/cli类型 96
2.15 小结 97
2.16 练习 97
2.17 本章主要内容 98
第3章 判断和循环 101
3.1 比较数据值 101
3.1.1 if语句 102
3.1.2嵌套的if语句 104
3.1.3嵌套的if-else语句 107
3.1.4逻辑运算符和表达式 109
3.1.5条件运算符 112
3.1.6 switch语句 113
3.1.7无条件转移 116
3.2 重复执行语句块 117
3.2.1循环的概念 117
3.2.2 for循环的变体 119
3.2.3 while循环 126
3.2.4 do-while循环 128
3.2.5嵌套的循环 129
3.3 c++/cli编程 132
3.4 小结 137
3.5 练习 138
3.6 本章主要内容 138
第4章 数组、字符串和指针 139
4.1 处理多个相同类型的数据值 139
4.1.1数组 140
4.1.2声明数组 140
4.1.3初始化数组 143
4.1.4字符数组和字符串处理 144
4.1.5多维数组 147
4.2 间接数据访问 150
4.2.1指针的概念 150
4.2.2声明指针 150
4.2.3使用指针 152
4.2.4初始化指针 152
4.2.5 sizeof操作符 158
4.2.6常量指针和指向常量的指针 159
4.2.7指针和数组 161
4.3 动态内存分配 168
4.3.1堆的别名—— 空闲存储器 168
4.3.2 new和delete操作符 168
4.3.3为数组动态分配内存 169
4.3.4多维数组的动态分配 171
4.4 使用引用 172
4.4.1引用的概念 172
4.4.2声明并初始化lvalue引用 172
4.4.3声明并初始化rvalue引用 173
4.5 字符串的本地c++库函数 174
4.5.1查找以空字符结尾的字符串的长度 174
4.5.2连接以空字符结尾的字符串 174
4.5.3复制以空字符结尾的字符串 176
4.5.4比较以空字符结尾的字符串 177
4.5.5搜索以空字符结尾的字符串 177
4.6 c++/cli编程 179
4.6.1跟踪句柄 180
4.6.2 clr数组 181
4.6.3字符串 195
4.6.4跟踪引用 203
4.6.5内部指针 204
4.7 小结 206
4.8 练习 206
4.9 本章主要内容 207
第5章 程序结构(1) 209
5.1 理解函数 209
5.1.1需要函数的原因 210
5.1.2函数的结构 210
5.1.3使用函数 213
5.2 给函数传递实参 216
5.2.1按值传递机制 216
5.2.2给函数传递指针实参 217
5.2.3给函数传递数组 219
5.2.4给函数传递引用实参 222
5.2.5使用const修饰符 224
5.2.6 rvalue引用形参 225
5.2.7 main()函数的实参 227
5.2.8接受数量不定的函数实参 229
5.3 从函数返回值 231
5.3.1返回指针 231
5.3.2返回引用 233
5.3.3函数中的静态变量 236
5.4 递归函数调用 238
5.5 c++/cli编程 240
5.5.1接受数量可变实参的函数 241
5.5.2 main( )的实参 242
5.6 小结 243
5.7 练习 243
5.8 本章主要内容 244
第6章 程序结构(2) 245
6.1 函数指针 245
6.1.1声明函数指针 246
6.1.2函数指针作为实参 249
6.1.3函数指针的数组 250
6.2 初始化函数形参 250
6.3 异常 252
6.3.1抛出异常 253
6.3.2捕获异常 254
6.3.3 mfc中的异常处理 255
6.4 处理内存分配错误 256
6.5 函数重载 257
6.5.1函数重载的概念 258
6.5.2引用类型和重载选择 260
6.5.3何时重载函数 260
6.6 函数模板 261
6.7 使用decltype操作符 263
6.8 使用函数的示例 265
6.8.1实现计算器 265
6.8.2从字符串中删除空格 268
6.8.3计算表达式的值 268
6.8.4获得项值 270
6.8.5分析数 271
6.8.6整合程序 274
6.8.7扩展程序 275
6.8.8提取子字符串 277
6.8.9运行修改过的程序 279
6.9 c++/cli编程 279
6.9.1理解泛型函数 280
6.9.2 clr版本的计算器程序 285
6.10 小结 290
6.11 练习 291
6.12 本章主要内容 292
第7章 自定义数据类型 293
7.1 c++中的结构 293
7.1.1结构的概念 294
7.1.2定义结构 294
7.1.3初始化结构 294
7.1.4访问结构的成员 295
7.1.5伴随结构的智能感知帮助 298
7.1.6 rect结构 299
7.1.7使用指针处理结构 300
7.2 数据类型、对象、类和实例 301
7.2.1类的起源 303
7.2.2类的操作 303
7.2.3术语 303
7.3 理解类 304
7.3.1定义类 304
7.3.2声明类的对象 305
7.3.3访问类的数据成员 305
7.3.4类的成员函数 307
7.3.5成员函数定义的位置 309
7.3.6内联函数 309
7.4 类构造函数 310
7.4.1构造函数的概念 311
7.4.2默认的构造函数 312
7.4.3在类定义中指定默认的形参值 314
7.4.4在构造函数中使用初始化列表 316
7.4.5声明显式的构造函数 317
7.5 类的私有成员 318
7.5.1访问私有类成员 320
7.5.2类的友元函数 321
7.5.3默认复制构造函数 323
7.6 this指针 325
7.7 类的const对象 327
7.7.1类的const成员函数 327
7.7.2类外部的成员函数定义 328
7.8 类对象的数组 329
7.9 类的静态成员 331
7.9.1类的静态数据成员 331
7.9.2类的静态函数成员 334
7.10 类对象的指针和引用 334
7.10.1类对象的指针 334
7.10.2类对象的引用 337
7.11 c++/cli编程 338
7.11.1定义值类类型 339
7.11.2定义引用类类型 344
7.11.3定义引用类类型的复制构造函数 346
7.11.4类属性 346
7.11.5 initonly字段 358
7.11.6静态构造函数 360
7.12 小结 360
7.13 练习 360
7.14 本章主要内容 361
第8章 深入理解类 363
8.1 类析构函数 363
8.1.1析构函数的概念 363
8.1.2默认的析构函数 364
8.1.3析构函数与动态内存分配 366
8.2 实现复制构造函数 369
8.3 在变量之间共享内存 370
8.3.1定义联合 371
8.3.2匿名联合 372
8.3.3类和结构中的联合 372
8.4 运算符重载 373
8.4.1实现重载的运算符 373
8.4.2实现对比较运算符的完全支持 376
8.4.3重载赋值运算符 379
8.4.4重载加法运算符 384
8.4.5重载递增和递减运算符 387
8.4.6重载函数调用操作符 388
8.5 对象复制问题 389
8.5.1避免不必要的复制操作 389
8.5.2应用rvalue引用形参 392
8.5.3命名的对象是lvalue 394
8.6 类模板 399
8.6.1定义类模板 400
8.6.2根据类模板创建对象 402
8.6.3使用有多个形参的类模板 405
8.6.4函数对象模板 406
8.7 使用类 407
8.7.1类接口的概念 407
8.7.2定义问题 407
8.7.3实现cbox类 408
8.8 组织程序代码 425
8.9 字符串的本地c++库类 427
8.9.1创建字符串对象 427
8.9.2连接字符串 429
8.9.3访问与修改字符串 432
8.9.4比较字符串 436
8.9.5搜索字符串 439
8.10 c++/cli编程 447
8.10.1在值类中重载运算符 447
8.10.2重载递增和递减运算符 452
8.10.3在引用类中重载运算符 453
8.10.4实现引用类型的赋值运算符 455
8.11 小结 456
8.12 练习 456
8.13 本章主要内容 457
第9章 类继承和虚函数 459
9.1 面向对象编程的基本思想 459
9.2 类的继承 460
9.2.1基类的概念 461
9.2.2基类的派生类 461
9.3 继承机制下的访问控制 464
9.3.1派生类中构造函数的操作 467
9.3.2声明类的保护成员 470
9.3.3继承类成员的访问级别 473
9.4 派生类中的复制构造函数 474
9.5 友元类成员 477
9.5.1友元类 479
9.5.2对类友元关系的限制 479
9.6 虚函数 479
9.6.1虚函数的概念 481
9.6.2使用指向类对象的指针 483
9.6.3使用引用处理虚函数 485
9.6.4纯虚函数 486
9.6.5抽象类 487
9.6.6间接基类 489
9.6.7虚析构函数 491
9.7 类类型之间的强制转换 494
9.8 嵌套类 495
9.9 c++/cli编程 498
9.9.1装箱与拆箱 499
9.9.2 c++/cli类的继承 499
9.9.3接口类 505
9.9.4定义接口类 505
9.9.5类和程序集 509
9.9.6被指定为new的函数 513
9.9.7委托和事件 514
9.9.8引用类的析构函数和终结器 525
9.9.9泛型类 527
9.10 小结 536
9.11 练习 536
9.12 本章主要内容 539
第10章 标准模板库 541
10.1 标准模板库的定义 541
10.1.1容器 542
10.1.2容器适配器 542
10.1.3迭代器 543
10.1.4算法 544
10.1.5 stl中的函数对象 545
10.1.6函数适配器 545
10.2 stl容器范围 545
10.3 序列容器 545
10.3.1创建矢量容器 546
10.3.2矢量容器的容量和大小 549
10.3.3访问矢量中的元素 553
10.3.4在矢量中插入和删除元素 553
10.3.5在矢量中存储类对象 555
10.3.6排序矢量元素 559
10.3.7排序矢量中的指针 560
10.3.8双端队列容器 562
10.3.9使用列表容器 565
10.3.10使用其他序列容器 574
10.4 关联容器 588
10.4.1使用映射容器 589
10.4.2使用多重映射容器 600
10.5 关于迭代器的更多内容 600
10.5.1使用输入流迭代器 601
10.5.2使用插入迭代器 604
10.5.3使用输出流迭代器 605
10.6 关于函数对象的更多内容 607
10.7 关于算法的更多内容 608
10.7.1 fill() 608
10.7.2 replace() 609
10.7.3 find() 609
10.7.4 transform() 610
10.8 lambda表达式 611
10.8.1 capture子句 612
10.8.2捕获特定的变量 613
10.8.3模板和lambda表达式 613
10.8.4包装lambda表达式 617
10.9 c++/cli程序的stl 618
10.9.1 stl/clr容器 619
10.9.2使用序列容器 619
10.9.3使用关联容器 627
10.10 c++/cli中的lambda表达式 633
10.11 小结 633
10.12 练习 633
10.13 本章主要内容 634
第11章 调试技术 635
11.1 理解调试 635
11.1.1程序故障 636
11.1.2常见故障 637
11.2 基本的调试操作 638
11.2.1设置断点 639
11.2.2设置跟踪点 641
11.2.3启动调试模式 641
11.2.4修改变量的值 645
11.3 添加调试代码 645
11.3.1使用断言 645
11.3.2添加自己的调试代码 647
11.4 调试程序 652
11.4.1调用栈 652
11.4.2单步执行到出错位置 653
11.5 测试扩展的类 656
11.6 调试动态内存 659
11.6.1检查空闲存储器的函数 660
11.6.2控制空闲存储器的调试操作 661
11.6.3空闲存储器的调试输出 662
11.7 调试c++/cli程序 668
11.7.1使用调试类debug和跟踪类trace 668
11.7.2在windows forms应用程序中获得跟踪输出 676
11.8 小结 677
11.9 本章主要内容 677
第12章 windows编程的概念 679
12.1 windows编程基础 679
12.1.1窗口的元素 680
12.1.2 windows程序与操作
系统 681
12.1.3事件驱动型程序 682
12.1.4 windows消息 682
12.1.5 windows api 682
12.1.6 windows数据类型 683
12.1.7 windows程序中
的符号 684
12.2 windows程序的结构 685
12.2.1 winmain()函数 686
12.2.2消息处理函数 696
12.2.3简单的windows程序 700
12.3 windows程序的组织 701
12.4 mfc 702
12.4.1 mfc表示法 702
12.4.2 mfc程序的组织方式 702
12.5 使用windows forms 706
12.6 小结 707
12.7 本章主要内容 707
第13章 多核编程 709
13.1 并行处理基本知识 709
13.2 并行模式库 710
13.3 并行处理算法 710
13.3.1使用parallel_for算法 710
13.3.2使用parallel_for_each算法 712
13.3.3使用parallel_invoke算法 714
13.4 真正的并行问题 715
13.5 临界区 728
13.5.1使用critical_section对象 728
13.5.2锁定代码节或解除代码节锁定 729
13.6 combinable类模板 731
13.7 任务和任务组 733
13.8 小结 736
13.9 练习 736
13.10 本章主要内容 736
第14章 使用mfc编写windows程序 739
14.1 mfc的文档/视图概念 739
14.1.1文档的概念 739
14.1.2文档界面 740
14.1.3视图的概念 740
14.1.4链接文档和视图 741
14.1.5应用程序和mfc 742
14.2 创建mfc应用程序 743
14.2.1创建sdi应用程序 745
14.2.2 mfc application wizard的输出 748
14.2.3创建mdi应用程序 757
14.3 小结 760
14.4 练习 760
14.5 本章主要内容 760
第15章 处理菜单和工具栏 763
15.1 与windows进行通信 763
15.1.1了解消息映射 764
15.1.2消息类别 767
15.1.3处理程序中的消息 767
15.2 扩展sketcher程序 768
15.3 菜单的元素 769
15.4 为菜单消息添加处理程序 771
15.4.1选择处理菜单消息的类 773
15.4.2创建菜单消息函数 773
15.4.3编写菜单消息函数的代码 775
15.4.4添加更新用户界面的消息处理程序 778
15.5 添加工具栏按钮 781
15.5.1编辑工具栏按钮的属性 782
15.5.2练习使用工具栏按钮 783
15.5.3添加工具提示 784
15.6 c++/cli程序中的菜单和工具栏 785
15.6.1理解windows forms 785
15.6.2理解windows forms应用程序 786
15.6.3在clr sketcher中添加菜单 788
15.6.4添加菜单项的事件处理程序 790
15.6.5实现事件处理程序 791
15.6.6设置菜单项复选 792
15.6.7添加工具栏 793
15.7 小结 797
15.8 练习 797
15.9 本章主要内容 797
第16章 在窗口中绘图 799
16.1 窗口绘图的基础知识 799
16.1.1窗口工作区 800
16.1.2 windows图形设备界面 800
16.2 visual c++中的绘图机制 802
16.2.1应用程序中的视图类 802
16.2.2 cdc类 803
16.3 实际绘制图形 811
16.4 对鼠标进行编程 813
16.4.1鼠标发出的消息 813
16.4.2鼠标消息处理程序 814
16.4.3使用鼠标绘图 816
16.5 练习使用sketcher程序 837
16.5.1运行示例 838
16.5.2捕获鼠标消息 838
16.6 在clr中绘图 840
16.6.1在窗体上绘图 840
16.6.2添加鼠标事件处理程序 840
16.6.3定义c++/cli元素类 842
16.6.4实现mousemove事件处理程序 850
16.6.5实现mouseup事件处理程序 851
16.6.6实现窗体的paint事件处理程序 851
16.7 小结 852
16.8 练习 852
16.9 本章主要内容 853
第17章 创建文档和改进视图 855
17.1 创建草图文档 855
17.2 改进视图 859
17.2.1更新多个视图 859
17.2.2滚动视图 861
17.2.3使用mm_loenglish映射模式 865
17.3 删除和移动形状 866
17.4 实现上下文菜单 866
17.4.1关联菜单和类 867
17.4.2练习弹出菜单 870
17.4.3突出显示元素 870
17.4.4处理菜单消息 874
17.5 处理屏蔽的元素 881
17.6 扩展clr sketcher 882
17.6.1坐标系统转换 882
17.6.2定义草图类 885
17.6.3在paint事件处理程序中绘制草图 886
17.6.4实现元素的突出显示 887
17.6.5创建上下文菜单 891
17.7 小结 897
17.8 练习 897
17.9 本章主要内容 898
第18章 使用对话框和控件 899
18.1 理解对话框 899
18.2 理解控件 900
18.3 创建对话框资源 900
18.3.1给对话框添加控件 901
18.3.2测试对话框 902
18.4 对话框的编程 902
18.4.1添加对话框类 902
18.4.2模态和非模态对话框 903
18.4.3显示对话框 903
18.5 支持对话框控件 906
18.5.1初始化控件 906
18.5.2处理单选按钮消息 907
18.6 完成对话框的操作 908
18.6.1给文档添加线宽 908
18.6.2给元素添加线宽 909
18.6.3在视图中创建元素 910
18.6.4练习使用对话框 910
18.7 使用微调按钮控件 911
18.7.1添加scale菜单项和工具栏按钮 911
18.7.2创建微调按钮 911
18.7.3生成比例对话框类 913
18.7.4显示微调按钮 915
18.8 使用缩放比例 916
18.8.1可缩放的映射模式 916
18.8.2设置文档的大小 917
18.8.3设置映射模式 918
18.8.4同时实现滚动与缩放 919
18.9 使用ctaskdialog类 921
18.9.1显示任务对话框 921
18.9.2创建ctaskdialog对象 923
18.10 使用状态栏 925
18.11 使用列表框 929
18.11.1删除比例对话框 929
18.11.2创建列表框控件 929
18.12 使用编辑框控件 931
18.12.1创建编辑框资源 931
18.12.2创建对话框类 933
18.12.3添加text菜单项 934
18.12.4定义文本元素 935
18.12.5实现ctext类 935
18.13 clr sketcher中的对话框和控件 940
18.13.1添加对话框 940
18.13.2创建文本元素 946
18.14 小结 953
18.15 练习 953
18.16 本章主要内容 953
第19章 存储和打印文档 955
19.1 了解序列化 955
19.2 序列化文档 956
19.2.1文档类定义中的序列化 956
19.2.2文档类实现中的序列化 957
19.2.3基于cobject的类的功能 959
19.2.4序列化的工作方式 960
19.2.5如何实现类的序列化 961
19.3 应用序列化 961
19.3.1记录文档修改 962
19.3.2序列化文档 963
19.3.3序列化元素类 965
19.4 练习序列化 968
19.5 打印文档 969
19.6 实现多页打印 972
19.6.1获取文档的总尺寸 973
19.6.2存储打印数据 973
19.6.3准备打印 974
19.6.4打印后的清除 976
19.6.5准备设备上下文 976
19.6.6打印文档 977
19.6.7获得文档的打印输出 980
19.7 clr sketcher中的序列化和打印 981
19.7.1了解二进制序列化 981
19.7.2序列化草图 985
19.7.3打印草图 995
19.8 小结 996
19.9 练习 996
19.10 本章主要内容 997
第20章 编写自己的dll 999
20.1 了解dll 999
20.1.1 dll的工作方式 1000
20.1.2 dll的内容 1003
20.1.3 dll变体 1003
20.2 决定放入dll的内容 1004
20.3 编写dll 1005
20.4 小结 1011
20.5 练习 1011
20.6 本章主要内容 1011