作者:empty 页数:799 出版社:empty |
C++在几乎所有的计算环境中都非常苦及,而且可以用于儿乎所有的应用程序。C++从C中维承了过程化编程的高效性,并集成了面向对象编程的功能。C++在其标准库中提供了大量的功能,有许多商业C++库支持数量众多的操作系统环境和专业应用程序.但因为它的内容太多了,所以掌握C++并不十分容易,本书详述了C++语言的各个方面,包括数据类型、程序控制、函数、指针、调试、类、重载、继承、多态性、模板、异常和输入输出等内容。每一章都以前述内容为基础,每个关键点都用具体的示例进行详细的讲解。本书基本不需要读者具备任何C++知识,书中包含了理解C++的所有必要知识,读者可以从头开始编写自己的C++程序,本书也适合于具备另一种语言编程经验但希望全面掌握C++语言的读者。
Ivor Horton是世界著名的计算机图书作家,主要从事与编程相关的及撰写工作,普帮助无数程序员步入编程的最常。他在IBM工作多年, 能使用多种语言进行编程(在多种机器上使用汇编语言和高级语言(,设计和实了实时闭环工业控制系统。Horton拥有丰富的教学经装(教学内容包括C、C++、Fortran、PL/1、APL等) , 同时还是机械、加工和电子CAD系统、机械CAM系统和ID NC/CNC系统方面的专家。Ivor Horton还著有:BeginningVisu at Crr 6、Bog inning CProgramming和Beginningdava 2等多然入门级好书。
李子敏,男,计算机科学及应用专业博士,某研究院高级研究员,拥有丰富的C.C++编程经验,在核心期H、国际国内会议上发表多篇文章,拥有著作3本、著2本。
译者前序C++自诞生以来,已成为使用最广泛的一种编程语言,C++从C中继承了过程化编程的高效性,集成了面向对象编程技术。C++还在其标准库中提供了大量的功能。它有着极大的灵活性、强大的功能和非常高的效率,常常用于专业应用程序的开发,由于其内容较多,掌握起来也不易。本书是《C++入门经典》的第3版,采用的编写方法与前两版相同,第3版在第1、2两版基础上又做了修订和更新,包括示例,对于自学的学生来说也是理想的选择,重载、继承、多志性、异常和输入输出等内容, 本书还深入讨论了类模板, 包括标准模板库(STLStandard Template Library) .每章都以前述内容为基础, 每个关键点都通过具体的示例进行讲解,每章的最后都提供了练习题。本书详细介绍了C++语言的各个方面,包括数据类型、程序控制、函数、指针、调试、类、本书主要介绍标准的C++编程语言,涉及C++的语法、面向对象的功能和标准库等所有基本内容,通过本书可以获得编写C++应用程序的所有必要知识.对于初学者来说,C++语言似乎比其他语言更难,但其功能和适用范围要远远超过其他编程语言,读者只要抱以正确的态度、具备编程的基本知识以及掌握C++的热情,在C++的学习和应用上就不会有太大的问题。学习本书,读者基本不需要具备任何编程语言的知识,只需了解基本的编程概念,就可以读懂本书,编写自己的C++程序,这也是学好C++的惟一方式.如果您了解像分支和循环这样的概念,那本书就非常适合您。本书也适合于已有其他语言编程经验但希望全面掌握C++语言的读者,由于受时间和译者自身水平的限制,翻译过程中难免出现错误和疏漏,敬请读者多多批评指正,反馈信息请发至fwkbook@tuptsighua.edu.cn信箱.当然,C++的标准定义为开发在任何硬件或操作系统环境下运行的编译器的参考框架。另本书将指出机器之间重要的、潜在的不同。但是,这需要一个实际有效的环境来显示本书作者Ivor Horton以善于教学而著称, 他的C、C++等书都拥有大量忠实读者。
第1章基本概念…
1.1编程语言……-.1
1.2C++是一种强大的语言.
2.4整型变量.-33
2.5赋值运算符….39
2.6整数的递增和递减….42
2.7 const关键字…….-44
2.8
整数的数字函数….
2.9浮点数…
2.4.1整型变量类型….-35
2.4.2整数的取值.…….37
2.4.3整型字面量的类型….38
2.10.1字符字面量…
1.1.1编程语言简史-
1.1.2解释性程序和编译性程序的
1.3.1名称.
1.3.2命名空间….
1.8.1通用字符集…
1.8.2三字符序列………
1.8.3转义序列…
2.2.1字面量….
2.2.2整型字面量……
2.2.3整数的算术运算.
2.2.4运算符的优先级和相关性.30
执行过程…
1.1.3库3
1.3一个简单的C++程序….4
1.4
关键字…
1.5C++语句和语句块…
1.6
程序结构…
1.7从源文件中创建可执行文件.-12
1.7.1编译.
1.7.2链接…
1.8C++源字符…
1.8.4语句中的空白-
1.9程序的注释…
1.10标准库…
1.11用C++编程……
1.12本章小结……
1.13练习…
第2章基本数据类型和计算…….
2.1数据和数据类型……
2.2进行简单的计算….
2.3使用变量.
2.5.1多次赋值……
2.5.2修改变量的值…….
2.9.1浮点数的数据类型.
2.10.2初始化char变量…….
2.10.3使用扩展字符集……
2.9.2浮点数的操作……
2.9.3使用浮点数值……53
2.9.4数值函数55
2.10使用字符…57
2.11初始值的函数表示法…….62
2.12
本章小结….62
2.13练习…….63
第3章处理基本数据类型.64
223.1混合的表达式….64
.-233.1.1赋值和不同的类型.-65
…243.1.2显式强制转换…66
-253.3.1移位运算符….-.74
.273.3.2位模式下的逻辑运.76
.323.4.1匿名枚举.-86
3.1.3老式的强制转换.68
3.2确定类型….70
3.3
按位运算符….73
3.4枚举数据类型….85
3.4.2在整型和教华类型之间
3.6.1自动变量…
4.1.1应用比较运算符…
4.1.2比较浮点数值.
4.4.2逻辑成运算符…-
4.4.3逻辑非运算符-
5.4.1循环和变量作用域…
5.7循环的中断…
5.8
本章小结….
5.9练习….
第6章数组和字符串-
3.5数据类型的同义词…-89
3.6变量的生存期….90
3.7特殊的类型修饰符.…-96
4.4.1逻辑与运算符.
8.2.1定义函数.
8.2.2函数的声明…
8.3.1按值传送机制…-
8.3.2按引用传送机制.
8.3.3 main 0的参数……
8.5.1返回一个指针….
8.5.2返回一个引用……
8.5.3从函数中返回新变量.-273
9.1.1函数的签名…
9.1.2重载和指针参数…
9.1.3重载和引用参数…
9.1.4重载和const参数.
9.1.5重载和默认参数值-
9.2.1创建函数模板的实例……
9.2.2显式指定模板参数……
9.2.3模板的说明.-
9.2.4函数模板和重载.
9.2.5带有多个参数的模板-…-292
9.3.1声明函数指针….
9.3.3函数指针的数组…-.
6.1数据数组….156
3.6.2定位变量的声明….92
3.6.3全局变量-92
3.6.4静态变量.95
3.8声明外部变量….96
3.9优先级和相关性…96
3.10本章小结….97
3.11练习….-.98
第4章选择和决策…….99
4.1比较数据值….99
4.2if语句.
4.3if-e is e语句…
4.4逻辑运算符……
4.5条件运算符…
4.6 switch语句….
4.7无条件分支…….124
4.8决策语句块和变量作用域…125
4.9本章小结…
4.10练习….
第5章循环…
5.1理解循环….127
5.2while循环……
5.3do-while循环…
5.4for循环…
5.5
9.3.2把函数作为参数传送……297
6.1.1使用数组…
6.1.2初始化数组….
6.1.3字符数组…
6.2多维数组.
6.2.1初始化多维数组….
6.2.2多维字符数组……
6.3 string类型…
6.4 string类型的数组.
6.3.1声明string对象….-175
63.2使用string对象.177
6.3.3访问字符串中的字符….179
6.3.4访问子字符串…182
6.3.5比较字符串.182
6.3.6搜索字符串……-188
6.3.7修改字符串196
宽字符的字符串…202
本章小结…202
6.7练习…203
第7章指针…204
7.1什么是指针……-204
7.2指针的声明.205
7.3指针的初始化…210
7.4常量指针和指向常量的指针….220
7.5指针和数组…221
7.5.1指针的算术运算……
7.5.2使用数组名的指针表示法.224
7.5.3对多维数组使用指针…-227
7.5.4C样式字符串的操作……229
7.6动态内存分配….231
7.6.1自由存储区-232
5.4.2用浮点数值控制for循环.137
5.4.3使用更复杂的循环控制表达式-140
嵌套的循环.143
5.6跳过循环迭代…147
7.7
本章小结…-241
7.8练习…-242
第8章使用函数编程……-243
8.1程序的分解…….-243
8.2理解函数….245
8.3给函数传送参数…-251
8.4默认的参数值…….265
8.5从函数中返回值…….268
8.6内联函数…….-273
8.7静态变量……273
8.8本章小结…276
8.9练习…-276
第9章函数…278
9.1函数的重载….278
9.2函数模板…285
9.3函数指针….293
9.4
递归…-299
9.5本章小结….307
7.62运算符new和delete….232
7.6.3数组的动态内存分配.-.-233
7.6.4动态内存分配的危险…-235
7.6.5转换.….-.241
10.1.1名称的作用域….310
10.1.2“一个定文”规则….-312
10.1.3程序文件和链接…313
10.1.4外部名称-314
10.2.1全局命名空间…319
10.2.2定义命名空间.319
10.2.3使用using声明…322
10.2.4函数和命名空间…322
10.2.5函数模板和命名空间…326
10.2.6扩展命名空间-.-327
10.2.7未指定名称的命名空间…330
10.2.8命名空间的别名…-331
10.2.9嵌套的命名空间-.-.331
10.3.1在程序中包含头文件……333
10.3.2程序中的置换……334
10.3.3宏置换…-336
10.3.4放在多行代码中的预
10.3.5把字符串作为宏参数….339
10.3.6在宏表达式中连接参数340
10.4.1逻辑Wif指令…-341
10.4.2测试特定值的指令…343
10.4.3多个代码选择块.-.343
10.4.4标准的预处理器宏…-344
10.4.5#error和#pragma指令…345
10.5.1集成调试器…346
10.5.2调试中的预处理器指令…347
10.5.3使用assert宏.353
更多源□莎莎的新浪博客(http:/blog.sina.com.cn/ckook
9.6练习…-307
第10章程序文件和预处理器指令…309
10.1使用程序文件………309
10.2命名空间…318
10.3预处理器…-.332
10.4逻辑预处理器指令….340
10.5调试方法….346
10.6本章小结…354
10.7练习…355
第11章创建自己的数据类型……356
11.1对象的概念…356
11.2.1理解结构.
11.2.2定义结构类型.
12.1.1封装…
12.1.2维承…
12.1.3多态性384
12.1.4术语….-385
12.3.1把构造函数的定义放在
123.2默认的构造函数…392
12.3.3默认的初始化值….-395
12.3.4在构造函数中使用初始化
12.3.5使用explicit关键字.-397
12.4.1访问私有类成员….402
12.4.2默认的副本构造函数…404
12.5,1类的友元函数-.-405
12.5.2友元类….408
12.7.1类中的mutable数据成员一415
12.7.2常量的强制转换….416
15.2.1维承和聚合….501
15.2.2从基类中派生新类……502
15.5.1在类层次结构中使用
15.5.2改变继承成员的访问
15.9.1…524
15.9.2维承成员的模糊性……526
15.9.3重复的维承…-531
15.9.4虚基类…-.-532
12.10.1类的静态数据成员.-.-421
12.10.2类的静态成员函数…426
本章小结…-427
类的操作….429
类对象的指针和引用…429
13.2指针作为数据成员…430
13.3控制对类的访问…….443
13.4副本构造函数的重要性…445
13.5对象内部的动态内存分配……453
13.6类的引用….457
13.7本章小结….459
13.8练习…460
第14章
14.1
14.2
11.2.3创建结构类型的对象….360
11.2.4访问结构对象的成员……-360
11.2.5对结构使用指针-366
11.3.1声明联合….-371
11.3.2匿名联合-…372
更复杂的结构……373
本章小结…-379
11.6练习…380
第12章类…….381
12.1类和面向对象编程……381
12.2定义类….385
12.3构造函数….388
12.4类的私有成员….398
12.5友元……405
12.6 this指针….409
12.7 const对象和const成员函数……413
12.8类的对象数组.-416
12.9类对象的大小…-419
第15章继承…499
15.1类和面向对象编程…….499
15.2类的继承….500
15.3继承下的访问控制……505
15.4把类的成员声明为protected…508
15.5派生类成员的访问级别…510
15.6派生类中的构造函数操作….514
15.7继承中的析构函数.520
15.8重复的成员名…….522
15.9多重继承….524
15.10在相关的类类型之间转换…533
15.11-534
15.12练习.534
第16章虚函数和多态性……536
16.1理解多态性….536
16.2多态性的成本…….559
16.3纯虚函数…rr-.560
16.4
13.2.1定义Package类……
13.2.2定义TruckLoad类…434
13.2.3实现TruckLoad类…-435
13.5.1析构函数…453
13.5.2定义析构函数…-453
13.5.3默认的析构函数……454
13.5.4实现析构数…456
运算符重载….461
为自己的类实现运算符……461
14.1.1运算符重载….-461
14.1.2可以重载的运算符……-462
14.1.3实现重救运算符…462
14.1.4全局运算符函数….-466
14.1.5提供对运算符的全部支持-466
14.1.6运算符函数术语…-470
14.1.7重毂赋值运算符…470
14.1.8重载算术运算符-477
14.1.9重载下标运算符…-482
14.1.10重载类型转换-.489
14.1.11重载递增和递减运算符…490
14.1.12智能指针…491
14.1.13重载运算符new和delete-497
本章小结…497
14.3练习…498
16.6.1数据成员指针…….570
16.6.2成员函数指针….574
17.2.1抛出异常…581
17.2.2导致抛出异常的代码…-586
17.2.3嵌套的try块.-.-588
17.3.1匹配Catch处理程序
17.3.2用基类处理程序捕获
17.3.3重新操出异常.……-.598
17.3.4捕获所有的异常….601
17.4.1函数try块………603
17.4.2在构选函数中抛出异常…605
17.4.3异常和析构函数.-606
17.5.1标准库异常类.…-.-607
17.5.2使用标准异常….-608
18.2.1模板参数….-613
18.2.2简单的类模板…613
18.2.3创建类模板的实例……617
18.2.4625
18.2.5.非类型的类模板参数…625
18.2.6非类型参数示例…626
18.2.7默认的模板参数值…636
类的外部-
列表-
访问指定符…
指定符……
多个基类.
本章小结…
16.1.1使用基类指针…536
16.1.2调用继承的函数.538
16.1.3虚函数…….-542
16.1.4虚函数中的默认参数值…549
16.1.5通过引用来调用皮函数……553
16.1.6调用虚函数的基类版本…-554
16.1.7在指针和类对象之间转换555
16.1.8动态强制转换.557
16.3.1抽象类.-.-.-.-560
16.3.2问接的抽象基类-.-563
通过指针释放对象.…….566
16.5在运行期间标识类型.569
16.6类成员的指针…….570
更多源□莎莎的新浪博客(http:/blog.sina.com.cn/ckook
16.7本章小结….-578
16.8练习…578
第17章程序错误和异常处理…580
17.1处理错误….580
17.2理解异常…581
17.3用类对象作为异常.591
17.4抛出异常的函数……603
17.5标准库异常.606
17.6本章小结….609
17.7练习…610
第18章类模板…611
18.1理解类模板………611
18.2定义类模板….612
18.3模板的显式实例化….636
18.4类模板的友元.637
18.5特殊情形….638
18.6带有嵌套类的类模板.640
18.7更高级的类模板……648
18.8本章小结……649
18.9练习….649
第19章输入输出操作……651
19.1C++中的输入输出…….-651
19.2流类.
19.3文件流……
19.4
20.2.5使用输入流达代器.-730
20.3.1给算法传送迭代器…736
20.3.2STL迭代器类型的要求…738
20.3.3STL迭代器成员函数的
20.3.4插入选代器…
20.4.1创建list容器.-.
20.4.2访问list容器中的元素….747
20.4.3 list容器上的操作…
20.3创建自己的迭代器…
20.4 list容器.
20.5关联map容器……
20.6
性能和规范…
20.7本章小结…
20.8练习…
附录A ASCII码…
附录BC++关键字…
附录C标准库头文件.
附录D运算符的优先级和相关性….774
附录E理解二进制和十六进制数……777
附录F项目示例…
要求-…
19.1.1理解流…
19.1.2使用流的优点.
19.2.1标准流…
19.9.1重我类对象的插入运算符-693
19.9.2重载类对象的提取运算符-696
19.9.3流中更复杂的对象….698
20.1.1STL组作.
20.1.2STL头文件…
20.2.1创建vector容器-.-1.-717
20.2.2访间vector容器中的元素-720
20.2.3 vector容器的基本操作…722
20.2.4使用vector容器进行数组
19.2.2流的插入和提取操作.655
19.2.3流操纵程序…-657
19.3.1写入文件.659
19.3.2读取文件.662
19.3.3设置文件打开模式….-664
未格式化的流操作…….672
19.4.1未格式化的流输入函数…673
19.4.2未格式化的流输出函数……674
19.5流输入输出中的错误……675