您好,欢迎来到聚文网。 登录 免费注册
C++入门经典

C++入门经典

编程导师、畅销书作者《C语言入门经典(第5版)》作者Ivor Horton经典作品
  • 字数: 973.00千字
  • 装帧: 平装
  • 出版社: 清华大学出版社
  • 作者: (美)霍尔顿(Ivor Horton) 著;石磊 译
  • 出版日期: 2015-08-01
  • 商品条码: 9787302406280
  • 版次: 1
  • 开本: 16开
  • 页数: 591
  • 出版年份: 2015
定价:¥69.8 销售价:登录后查看价格  ¥{{selectedSku?.salePrice}} 
库存: {{selectedSku?.stock}} 库存充足
{{item.title}}:
{{its.name}}
精选
内容简介
《C++入门经典(第4版)》是一本C++初学者指南,讨论了适合初学者的C++功能子集,其语法对应于C++14标准。本书的内容适合于任何开发环境,可以在任何操作系统或程序开发系统中使用。读者不需要有任何编程知识。
本书中的所有语言特性都用具体的例子来说明,通过每章很后的练习还可以测试自己对所学知识的掌握情况。文中的示例和习题答案都可以从网上下载,学完本书后,还可以试着完成一个可下载的、更实际的项目。
本书介绍了C++标准库的元素,标准库提供对本书讨论的语法的基本支持。标准模板库(STL)讨论得不多,只介绍并应用了标准模板库中几个对现代C++理念很好重要的元素。
作者简介
Ivor Horton,是世界有名计算机图书作家,独立顾问,帮助无数程序员步入编程殿堂。他曾在IBM工作多年,以优异成绩拥有数学学士学位。他的资历包括:使用大多数语言(如在多种机器上使用汇编语言和不错语言)进行编程,实时编程,设计和实现实时闭环工业控制系统。Horton拥有丰富的面向工程师和科学家的编程教学经验(教学内容包括C、C++、Fortran、PL/1、APL等)。同时,他还是机械、加工和电子CAD系统、机械CAM系统和DNC/CNC系统方面的专家。
目录
第1章基本概念1
1.1现代C++1
1.2C++程序概念2
1.2.1注释和空白2
1.2.2预处理指令和头文件3
1.2.3函数3
1.2.4语句4
1.2.5数据输入输出4
1.2.6return语句5
1.2.7名称空间5
1.2.8名称和关键字6
1.3类和对象6
1.4模板7
1.5程序文件7
1.6标准库7
1.7代码的表示样式7
1.8创建可执行文件8
1.9表示数字9
1.9.1二进制数9
1.9.2十六进制数11
1.9.3负的二进制数12
1.9.4八进制数14
1.9.5Big-Endian和Little-Endian系统14
1.9.6浮点数15
1.10表示字符16
1.10.1ASCII码16
1.10.2UCS和Unicode17
1.11C++源字符17
1.11.1三字符序列18
1.11.2转义序列18
1.12过程化编程方法和面向
对象编程方法20
1.13本章小结21
1.14练习22
第2章基本数据类型23
2.1变量、数据和数据类型23
2.1.1定义整型变量24
2.1.2定义有固定值的变量26
2.2整型字面量26
2.2.1十进制整型字面量27
2.2.2十六进制的整型字面量27
2.2.3八进制的整型字面量27
2.2.4二进制的整型字面量28
2.3整数的计算28
2.4op=赋值运算符33
2.5using声明和指令34
2.6sizeof运算符34
2.7整数的递增和递减35
2.8定义浮点变量37
2.8.1浮点字面量38
2.8.2浮点数的计算38
2.8.3缺点38
2.8.4无效的浮点结果39
2.9数值函数40
2.10流输出的格式化43
2.11混合的表达式和类型转换45
2.11.1显式类型转换46
2.11.2老式的强制转换48
2.12确定数值的上下限49
2.13使用字符变量50
2.13.1使用Unicode字符51
2.13.2auto关键字52
2.13.3lvalue和rvalue52
2.14本章小结53
2.15练习54
第3章处理基本数据类型55
3.1运算符的优先级和相关性55
3.2按位运算符57
3.2.1移位运算符58
3.2.2使用按位与运算符60
3.2.3使用按位或运算符61
3.2.4使用按位异或运算符63
3.3枚举数据类型67
3.4数据类型的同义词70
3.5变量的生存期70
3.5.1定位变量的定义71
3.5.2全局变量71
3.5.3静态变量74
3.5.4外部变量75
3.6本章小结75
3.7练习76
第4章决策77
4.1比较数据值77
4.1.1应用比较运算符78
4.1.2比较浮点数值79
4.2if语句80
4.2.1嵌套的if语句82
4.2.2不依赖编码的字符处理84
4.3if-else语句85
4.3.1嵌套的if-else语句87
4.3.2理解嵌套的if语句88
4.4逻辑运算符89
4.4.1逻辑与运算符90
4.4.2逻辑或运算符90
4.4.3逻辑非运算符91
4.5条件运算符92
4.6switch语句94
4.7无条件分支98
4.8语句块和变量作用域99
4.9本章小结100
4.10练习100
第5章数组和循环103
5.1数据数组103
5.2理解循环105
5.3for循环106
5.3.1避免幻数107
5.3.2用初始化列表定义数组的大小109
5.3.3确定数组的大小109
5.3.4用浮点数值控制for循环110
5.3.5使用更复杂的循环控制表达式112
5.3.6逗号运算符113
5.3.7基于区域的for循环114
5.4while循环115
5.5do-while循环119
5.6嵌套的循环120
5.7跳过循环迭代123
5.8循环的中断125
5.9字符数组128
5.10多维数组131
5.10.1初始化多维数组134
5.10.2在默认情况下设置维数135
5.10.3多维字符数组136
5.11数组的替代品137
5.11.1使用array<T,N>容器138
5.11.2使用std::vector<T>容器142
5.11.3矢量的容量和大小143
5.11.4删除矢量容器中的元素145
5.12本章小结145
5.13练习146
第6章指针和引用149
6.1什么是指针149
6.1.1地址运算符151
6.1.2间接运算符152
6.1.3为什么使用指针153
6.2char类型的指针154
6.3常量指针和指向常量的指针158
6.4指针和数组159
6.4.1指针的算术运算160
6.4.2计算两个指针之间的差162
6.4.3使用数组名的指针表示法162
6.5动态内存分配165
6.5.1栈和堆165
6.5.2运算符new和delete166
6.5.3数组的动态内存分配167
6.5.4通过指针选择成员169
6.6动态内存分配的危险169
6.6.1内存泄漏169
6.6.2自由存储区的碎片170
6.7原指针和智能指针170
6.7.1使用unique_ptr<T>指针172
6.7.2使用shared_ptr<T>指针173
6.7.3比较shared_ptr<T>对象177
6.7.4weak_ptr<T>指针177
6.8理解引用178
6.8.1定义左值引用179
6.8.2在基于区域的for循环中使用引用变量180
6.8.3定义右值引用180
6.9本章小结181
6.10练习181
第7章操作字符串183
7.1更好的string类型183
7.1.1定义string对象184
7.1.2string对象的操作186
7.1.3访问字符串中的字符188
7.1.4访问子字符串190
7.1.5比较字符串191
7.1.6搜索字符串196
7.1.7修改字符串203
7.2国际字符串207
7.3包含Unicode字符串的对象208
7.4原字符串字面量208
7.5本章小结209
7.6练习210
第8章定义函数211
8.1程序的分解211
8.1.1类中的函数212
8.1.2函数的特征212
8.2定义函数212
8.2.1函数体213
8.2.2函数声明215
8.3给函数传送参数217
8.3.1按值传送机制217
8.3.2按引用传送223
8.3.3main()的参数227
8.4默认的参数值228
8.5从函数中返回值231
8.5.1返回指针231
8.5.2返回引用235
8.6内联函数236
8.7静态变量237
8.8函数的重载239
8.8.1重载和指针参数241
8.8.2重载和引用参数241
8.8.3重载和const参数243
8.8.4重载和默认参数值244
8.9函数模板245
8.9.1创建函数模板的实例246
8.9.2显式指定模板参数247
8.9.3函数模板的特例248
8.9.4函数模板和重载249
8.9.5带有多个参数的函数模板250
8.9.6非类型的模板参数251
8.10拖尾返回类型252
8.11函数指针253
8.12递归256
8.12.1应用递归259
8.12.2Quicksort算法259
8.12.3main()函数260
8.12.4extract_words()函数261
8.12.5swap()函数262
8.12.6sort()函数262
8.12.7max_word_length()函数263
8.12.8show_words()函数264
8.13本章小结265
8.14练习266
第9章lambda表达式269
9.1lambda表达式简介269
9.2定义lambda表达式269
9.3lambda表达式的命名270
9.4把lambda表达式传递给函数272
9.4.1接受lambda表达式变元的函数模板272
9.4.2lambda变元的函数参数类型273
9.4.3使用std::function模板类型274
9.5捕获子句277
9.6在模板中使用lambda表达式279
9.7lambda表达式中的递归281
9.8本章小结283
9.9练习283
第10章程序文件和预处理指令285
10.1理解转换单元285
10.1.1“一个定义”规则286
10.1.2程序文件和链接286
10.1.3确定名称的链接属性286
10.1.4外部名称287
10.1.5具有外部链接属性的
const变量287
10.2预处理源代码288
10.3定义预处理标识符289
10.4包含头文件290
10.5名称空间292
10.5.1全局名称空间293
10.5.2定义名称空间293
10.5.3应用using声明296
10.5.4函数和名称空间296
10.5.5未命名的名称空间299
10.5.6名称空间的别名299
10.5.7嵌套的名称空间300
10.6逻辑预处理指令301
10.6.1逻辑#if指令301
10.6.2测试指定标识符的值302
10.6.3多个代码选择302
10.6.4标准的预处理宏303
10.7调试方法304
10.7.1集成调试器304
10.7.2调试中的预处理指令305
10.7.3使用assert宏309
10.7.4关闭断言机制310
10.8静态断言310
10.9本章小结312
10.10练习313
第11章定义自己的数据类型315
11.1类和面向对象编程315
11.1.1封装316
11.1.2继承318
11.1.3多态性318
11.1.4术语319
11.2定义类320
11.3构造函数322
11.3.1在类的外部定义构造函数324
11.3.2默认构造函数的参数值326
11.3.3在构造函数中使用初始化列表326
11.3.4使用explicit关键字327
11.3.5委托构造函数329
11.3.6默认的副本构造函数331
11.4访问私有类成员332
11.5友元333
11.5.1类的友元函数334
11.5.2友元类336
11.6this指针337
11.7const对象和const函数成员338
11.8类的对象数组340
11.9类对象的大小342
11.10类的静态成员342
11.10.1静态数据成员342
11.10.2类的静态函数成员347
11.11析构函数347
11.12类对象的指针和引用350
11.13将指针作为类的成员351
11.13.1定义Package类353
11.13.2定义TruckLoad类354
11.13.3实现TruckLoad类355
11.14嵌套类360
11.15本章小结363
11.16练习363
第12章运算符重载365
12.1为类实现运算符365
12.1.1运算符重载366
12.1.2可以重载的运算符366
12.1.3实现重载运算符366
12.1.4全局运算符函数369
12.1.5提供对运算符的全部支持369
12.1.6在类中实现所有的比较运算符371
12.2运算符函数术语373
12.3默认的类成员374
12.3.1定义析构函数375
12.3.2何时定义副本构造函数377
12.3.3实现赋值运算符377
12.3.4实现移动操作379
12.4重载算术运算符380
12.4.1改进输出操作384
12.4.2根据一个运算符实现另一个运算符386
12.5重载下标运算符387
12.6重载类型转换394
12.7重载递增和递减运算符395
12.8函数对象396
12.9本章小结397
12.10练习398
第13章继承399
13.1类和面向对象编程399
13.2类的继承401
13.2.1继承和聚合401
13.2.2派生类402
13.3把类的成员声明为protected405
13.4派生类成员的访问级别405
13.4.1在类层次结构中使用访问指定符406
13.4.2改变继承成员的访问指定符408
13.5派生类中的构造函数操作408

13.5.1派生类中的副本构造函数412
13.5.2派生类中的默认构造函数414
13.5.3继承构造函数414
13.6继承中的析构函数415
13.7重复的成员名417
13.8重复的函数成员名418
13.9多重继承419
13.9.1多个基类419
13.9.2继承成员的模糊性420
13.9.3重复的继承424
13.9.4虚基类425
13.10在相关的类类型之间转换425
13.11本章小结426
13.12练习426
第14章多态性429
14.1理解多态性429
14.1.1使用基类指针429
14.1.2调用继承的函数431
14.1.3虚函数434
14.1.4虚函数中的默认参数值442
14.1.5通过智能指针调用虚函数443
14.1.6通过引用调用虚函数444
14.1.7调用虚函数的基类版本445
14.1.8在指针和类对象之间转换446
14.1.9动态强制转换447
14.1.10转换引用449
14.1.11确定多态类型449
14.2多态性的成本450
14.3纯虚函数451
14.3.1抽象类452
14.3.2间接的抽象基类454
14.4通过指针释放对象457
14.5本章小结458
14.6练习459
第15章运行时错误和异常461
15.1处理错误461
15.2理解异常462
15.2.1抛出异常463
15.2.2异常处理过程465
15.2.3未处理的异常466
15.2.4导致抛出异常的代码467
15.2.5嵌套的try块468
15.3用类对象作为异常472
15.3.1匹配Catch处理程序和异常473
15.3.2用基类处理程序捕获派生类异常476
15.3.3重新抛出异常478
15.3.4捕获所有的异常481
15.4抛出异常的函数482
15.4.1函数try块483
15.4.2不抛出异常的函数483
15.4.3构造函数try块484
15.4.4异常和析构函数484
15.5标准库异常485
15.5.1异常类的定义486
15.5.2使用标准异常487
15.6本章小结490
15.7练习491
第16章类模板493
16.1理解类模板493
16.2定义类模板494
16.2.1模板参数495
16.2.2简单的类模板495
16.2.3定义类模板的函数成员497
16.3创建类模板的实例501
16.4类模板的静态成员506
16.5非类型的类模板参数507
16.5.1带有非类型参数的函数成员的模板510
16.5.2非类型参数的变元514
16.5.3把指针和数组用作非类型参数514
16.6模板参数的默认值515
16.7模板的显式实例化516
16.8特殊情形516
16.8.1在类模板中使用static_assert()517
16.8.2定义类模板特化518
16.8.3部分模板特化519
16.8.4从多个部分特化中选择519
16.9类模板的友元520
16.10带有嵌套类的类模板521
16.11本章小结528
16.12练习528
第17章文件输入与输出531
……

蜀ICP备2024047804号

Copyright 版权所有 © jvwen.com 聚文网