图书介绍
C++面向对象程序设计PDF|Epub|txt|kindle电子书版本网盘下载
![C++面向对象程序设计](https://www.shukui.net/cover/70/33234527.jpg)
- 周靖编著 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302215301
- 出版时间:2010
- 标注页数:718页
- 文件大小:195MB
- 文件页数:741页
- 主题词:C语言-程序设计-教材
PDF下载
下载说明
C++面向对象程序设计PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 计算机和C++编程入门1
概述2
1.1 计算机系统2
1.1.1 硬件2
1.1.2 软件5
1.1.3 高级语言6
1.1.4 编译器7
1.1.5 历史回顾9
1.2 编程和问题求解10
1.2.1 算法10
1.2.2 程序设计11
1.2.3 面向对象编程12
1.2.4 软件的生命周期13
1.3 C++入门14
1.3.1 C++语言的起源14
1.3.2 一个C++示范程序15
1.3.3 陷阱:在\n中错误地使用斜杠17
1.3.4 编程提示:输入和输出语法17
1.3.5 简单C++程序的布局18
1.3.6 陷阱:在include的文件名前错误地添加一个空格19
1.3.7 编译和运行C++程序20
1.3.8 编程提示:让程序运行起来20
1.4 测试和调试23
1.4.1 程序错误的分类23
1.4.2 陷阱:错误地假定程序正确24
小结25
自测题答案25
编程项目26
第2章 C++基础知识29
概述30
预备知识30
2.1 变量和赋值30
2.1.1 变量30
2.1.2 名称:标识符32
2.1.3 变量声明33
2.1.4 赋值语句34
2.1.5 陷阱:未初始化的变量35
2.1.6 编程提示:使用有意义的名称36
2.2 输入和输出37
2.2.1 使用cout进行输出37
2.2.2 include预编译指令和命名空间38
2.2.3 转义序列39
2.2.4 编程提示:用\n或endl终止每一个程序40
2.2.5 格式化带小数点的数字41
2.2.6 用cin进行输入42
2.2.7 设计输入和输出43
2.2.8 编程提示:I/O中的换行43
2.3 数据类型和表达式45
2.3.1 int类型和double类型45
2.3.2 其他数字类型46
2.3.3 char类型47
2.3.4 bool类型48
2.3.5 string类简介48
2.3.6 类型的兼容性50
2.3.7 算术操作符和表达式51
2.3.8 陷阱:除法中的整数53
2.3.9 更多赋值语句54
2.4 简单控制流程55
2.4.1 一个简单的分支机制55
2.4.2 陷阱:连续的不等式59
2.4.3 陷阱:在该用==的时候错用了=59
2.4.4 复合语句60
2.4.5 简单的循环机制62
2.4.6 递增操作符和递减操作符65
2.4.7 编程实例:信用卡余额65
2.4.8 陷阱:无限循环66
2.5 程序风格69
2.5.1 缩进69
2.5.2 注释69
2.5.3 为常量命名71
小结73
自测题答案73
编程项目76
第3章 更多的控制流程81
概述82
预备知识82
3.1 使用布尔表达式82
3.1.1 布尔表达式求值82
3.1.2 陷阱:将布尔表达式转换成int值85
3.1.3 枚举类型(选读)87
3.2 多路分支88
3.2.1 嵌套语句88
3.2.2 编程提示:在嵌套语句中使用花括号88
3.2.3 多路if-else语句90
3.2.4 编程实例:州收入税92
3.2.5 switch语句94
3.2.6 陷阱:忘记在switch语句中添加break97
3.2.7 为菜单使用switch语句97
3.2.8 语句块98
3.2.9 陷阱:疏忽局部变量100
3.3 C++循环语句详解102
3.3.1 while语句回顾102
3.3.2 再论递增操作符和递减操作符103
3.3.3 for语句105
3.3.4 陷阱:for语句中多余的分号109
3.3.5 应该使用哪种循环109
3.3.6 陷阱:未初始化的变量和无限循环111
3.3.7 break语句111
3.3.8 陷阱:嵌套循环中的break语句112
3.4 设计循环113
3.4.1 求和与求乘积的循环113
3.4.2 终止循环114
3.4.3 嵌套循环116
3.4.4 调试循环118
小结121
自测题答案121
编程项目125
第4章 过程抽象和返回一个值的函数129
概述130
预备知识130
4.1 自顶向下设计130
4.2 预定义函数130
4.2.1 使用预定义函数131
4.2.2 强制类型转换134
4.2.3 强制类型转换的古老形式136
4.2.4 陷阱:整数除法丢弃了小数部分136
4.3 程序员自定义函数138
4.3.1 函数定义138
4.3.2 能返回布尔值的函数142
4.3.3 另一种形式的函数声明142
4.3.4 陷阱:实参顺序错误143
4.3.5 函数定义语法总结144
4.3.6 再论函数定义的位置144
4.3.7 编程提示:在分支语句中使用函数调用145
4.4 过程抽象146
4.4.1 黑盒的比喻146
4.4.2 编程提示:选择形参名称147
4.4.3 编程提示:嵌套循环148
4.4.4 案例分析:购买比萨150
4.4.5 编程提示:使用伪代码155
4.5 局部变量156
4.5.1 函数如同小程序156
4.5.2 编程实例:豌豆试验田158
4.5.3 全局常量和全局变量158
4.5.4 传值调用形参是局部变量160
4.5.5 再论命名空间161
4.5.6 编程实例:阶乘函数163
4.6 重载函数名称165
4.6.1 重载入门165
4.6.2 编程实例;购买比萨(修订版)167
4.6.3 自动类型转换169
小结171
自测题答案171
编程项目174
第5章 所有子任务的函数177
概述178
预备知识178
5.1 void函数178
5.1.1 void函数的定义178
5.1.2 编程实例:温度换算180
5.1.3 void函数中的return语句181
5.2 传引用调用形参183
5.2.1 初探传引用调用183
5.2.2 传引用调用详解185
5.2.3 编程实例:swap_values函数187
5.2.4 混合的参数列表188
5.2.5 编程提示:应该使用哪种参数189
5.2.6 陷阱:疏忽造成的局部变量190
5.3 使用过程抽象192
5.3.1 由函数来调用函数192
5.3.2 前条件和后条件193
5.3.3 案例分析:超市定价系统194
5.4 测试和调试函数199
5.5 常规调试技术203
5.5.1 不抱成见203
5.5.2 检查常见错误203
5.5.3 定位错误203
5.5.4 assert宏204
小结206
自测题答案206
编程项目209
第6章 I/O流——对象和类入门213
概述214
预备知识214
6.1 流和基本文件I/O214
6.1.1 文件之于I/O的重要性215
6.1.2 文件I/O215
6.1.3 类与对象入门218
6.1.4 编程提示:检查文件是否成功打开220
6.1.5 文件I/O技术222
6.1.6 追加到文件(选读)224
6.1.7 文件名作为输入(选读)225
6.2 流I/O工具228
6.2.1 用流函数格式化输出228
6.2.2 操纵元231
6.2.3 流作为函数实参233
6.2.4 编程提示:检查文件尾234
6.2.5 命名空间的问题235
6.2.6 编程实例:整理文件格式236
6.3 字符I/O238
6.3.1 get和put成员函数238
6.3.2 putback成员函数(选读)241
6.3.3 编程实例:检查输入241
6.3.4 陷阱:输入中不期而遇的'n'243
6.3.5 eof成员函数245
6.3.6 编程实例:编辑文本文件247
6.3.7 预定义的字符函数248
6.3.8 陷阱:toupper和tolower返回值249
小结251
自测题答案251
编程项目255
第7章 数组261
概述262
预备知识262
7.1 数组入门262
7.1.1 声明和引用数组262
7.1.2 编程提示:为数组使用for循环264
7.1.3 陷阱:数组索引总是从零开始264
7.1.4 编程提示:为数组长度使用一个已定义常量264
7.1.5 数组在内存中的表示265
7.1.6 陷阱:数组索引越界266
7.1.7 初始化数组267
7.2 函数中的数组269
7.2.1 索引变量作为函数参数269
7.2.2 整个数组作为函数参数270
7.2.3 const参数修饰符273
7.2.4 陷阱:不一致地使用const参数274
7.2.5 返回数组的函数275
7.2.6 案例分析:产量图275
7.3 数组编程285
7.3.1 部分填充数组285
7.3.2 编程提示:不要吝啬形参287
7.3.3 编程实例:数组搜索287
7.3.4 编程实例:数组排序289
7.4 多维数组293
7.4.1 多维数组基础293
7.4.2 多维数组参数294
7.4.3 编程实例:二维打分程序295
7.4.4 陷阱:在数组索引之间使用逗号297
小结299
自测题答案299
编程项目302
第8章 字符串和向量309
概述310
预备知识310
8.1 字符串的一种数组类型310
8.1.1 C字符串值和C字符串变量311
8.1.2 陷阱:为C字符串使用=和?313
8.1.3 〈cstring〉中的其他函数315
8.1.4 C字符串输入和输出318
8.1.5 C字符串到数字的转换和可靠输入320
8.2 标准string类324
8.2.1 标准类string简介324
8.2.2 string类的I/O326
8.2.3 编程提示:getline的其他版本328
8.2.4 陷阱:混合使用“cin>>变量;”和getline329
8.2.5 用string类进行字符串处理330
8.2.6 编程实例:回文测试333
8.2.7 string对象和C字符串之间的转换335
8.3 向量337
8.3.1 向量基础知识337
8.3.2 陷阱:使用方括号时超出向量长度339
8.3.3 编程提示:向量赋值具有良好行为340
8.3.4 效率问题340
小结342
自测题答案342
编程项目344
第9章 指针和动态数组349
概述350
预备知识350
9.1 指针350
9.1.1 指针变量351
9.1.2 基本内存管理356
9.1.3 陷阱:虚悬指针356
9.1.4 静态变量和自动变量356
9.1.5 编程提示:定义指针类型357
9.2 动态数组359
9.2.1 数组变量和指针变量359
9.2.2 创建和使用动态数组360
9.2.3 指针运算(选读)363
9.2.4 多维动态数组(选读)364
小结367
自测题答案367
编程项目368
第10章 定义类371
概述372
预备知识372
10.1 结构372
10.1.1 用于异种数据的结构372
10.1.2 陷阱:结构定义中忘记添加分号376
10.1.3 结构作为函数参数376
10.1.4 编程提示:使用层次化结构377
10.1.5 对结构进行初始化378
10.2 类381
10.2.1 定义类和成员函数381
10.2.2 公共成员和私有成员384
10.2.3 编程提示:将所有成员变量变成私有389
10.2.4 编程提示:定义取值函数和赋值函数390
10.2.5 编程提示:将赋值操作符用于对象391
10.2.6 编程实例:BankAccount类(版本1)391
10.2.7 总结类的一些特征395
10.2.8 用于初始化的构造函数396
10.2.9 编程提示:总是包括一个默认构造函数401
10.2.10 陷阱:无参数构造函数402
10.3 抽象数据类型404
10.3.1 用于生成抽象数据类型的类404
10.3.2 编程实例:类的另一种实现407
10.4 继承411
10.4.1 流类之间的继承关系411
10.4.2 编程实例:另一个new_line函数414
10.4.3 函数的默认参数(选读)414
10.4.4 定义派生类415
小结419
自测题答案419
编程项目424
第11章 类中的友元函数、重载操作符和数组429
概述430
预备知识430
11.1 友元函数430
11.1.1 编程实例:一个相等性函数430
11.1.2 友元函数432
11.1.3 编程提示:定义取值函数和友元函数434
11.1.4 编程提示:同时使用成员函数和非成员函数434
11.1.5 编程实例:Money类(版本1)435
11.1.6 实现digit_to_int(选读)440
11.1.7 陷阱:数字常量中的前置零440
11.1.8 const参数修饰符441
11.1.9 陷阱:不一致地使用const443
11.2 重载操作符446
11.2.1 重载操作符446
11.2.2 用于自动类型转换的构造函数449
11.2.3 重载一元操作符450
11.2.4 重载>>和<<451
11.3 数组和类458
11.3.1 类数组458
11.3.2 数组作为类成员460
11.3.3 编程实例:用于部分填充数组的一个类461
11.4 类和动态数组464
11.4.1 编程实例:一个字符串变量类464
11.4.2 析构函数466
11.4.3 陷阱:指针作为传值调用参数468
11.4.4 拷贝构造函数469
11.4.5 重载赋值操作符473
小结476
自测题答案476
编程项目482
第12章 独立编译和命名空间489
概述490
预备知识490
12.1 独立编译490
12.1.1 ADT回顾490
12.1.2 案例分析:一个独立编译的类DigitalTime491
12.1.3 使用#ifndef498
12.1.4 编程提示:定义其他库500
12.2 命名空间502
12.2.1 命名空间和using预编译指令502
12.2.2 创建命名空间503
12.2.3 限定名称505
12.2.4 命名空间的微妙之处(选读)506
12.2.5 无名命名空间507
12.2.6 编程提示:为命名空间选择一个名称510
12.2.7 陷阱:混淆全局命名空间和无名命名空间511
小结513
自测题答案513
编程项目514
第13章 指针和链表517
概述518
预备知识518
13.1 节点和链表518
13.1.1 节点518
13.1.2 链表522
13.1.3 在表头插入一个节点523
13.1.4 陷阱:丢失节点525
13.1.5 搜索链表526
13.1.6 指针作为迭代器528
13.1.7 在列表中插入和移除节点529
13.1.8 陷阱:为动态数据结构使用赋值操作符531
13.1.9 链表的变体532
13.1.10 由类构成的链表534
13.2 栈和队列537
13.2.1 栈537
13.2.2 编程实例:一个栈类537
13.2.3 队列541
13.2.4 编程实例:一个队列类541
小结545
自测题答案545
编程项目547
第14章 递归551
概述552
预备知识552
14.1 面向任务的递归函数553
14.1.1 案例分析:垂直数字553
14.1.2 深入递归558
14.1.3 陷阱:无穷递归559
14.1.4 用于递归的栈560
14.1.5 陷阱:栈溢出561
14.1.6 递归与迭代561
14.2 面向值的递归函数563
14.2.1 要返回值的递归函数的常规形式563
14.2.2 编程实例:另一个Powers函数563
14.3 递归思想567
14.3.1 递归设计技术567
14.3.2 案例分析:二叉搜索(递归思想示例)568
14.3.3 编程实例:一个递归成员函数574
小结577
自测题答案577
编程项目580
第15章 继承583
概述584
预备知识584
15.1 继承基础584
15.1.1 派生类585
15.1.2 派生类中的构造函数590
15.1.3 陷阱:使用来自基类的私有成员变量592
15.1.4 陷阱:私有成员函数根本不会继承593
15.1.5 protected限定符593
15.1.6 重定义成员函数595
15.1.7 重定义与重载的比较597
15.1.8 访问重定义的基函数598
15.2 继承细节600
15.2.1 不继承的函数600
15.2.2 派生类中的赋值操作符和拷贝构造函数600
15.2.3 派生类中的析构函数601
15.3 多态性603
15.3.1 晚期绑定603
15.3.2 C++中的虚函数604
15.3.3 虚函数和扩展类型兼容性607
15.3.4 陷阱:切片问题610
15.3.5 陷阱:不使用虚成员函数610
15.3.6 陷阱:试图对虚成员函数定义不齐全的类进行编译611
15.3.7 编程提示:虚析构函数611
小结613
自测题答案613
编程项目616
第16章 异常处理621
概述622
预备知识622
16.1 异常处理基础623
16.1.1 异常处理的一个玩具式例子623
16.1.2 定义自己的异常类629
16.1.3 多个throw和catch630
16.1.4 陷阱:首先捕捉较具体的异常632
16.1.5 编程提示:异常类可能微不足道633
16.1.6 在函数中抛出异常633
16.1.7 异常规范634
16.1.8 陷阱:派生类中的异常规范636
16.2 用于异常处理的编程技术637
16.2.1 抛出异常的时机637
16.2.2 陷阱:未捕捉的异常638
16.2.3 陷阱:嵌套的try-catch块638
16.2.4 陷阱:滥用异常638
16.2.5 异常类层次结构638
16.2.6 测试可用内存639
16.2.7 重新抛出异常639
小结640
自测题答案640
编程项目641
第17章 模板643
概述644
预备知识644
17.1 用于算法抽象的模板644
17.1.1 函数模板645
17.1.2 陷阱:编译器的复杂性648
17.1.3 编程实例:一个泛化的排序函数649
17.1.4 编程提示:如何定义模板652
17.1.5 陷阱:为不恰当的类型使用模板652
17.2 用于数据抽象的模板653
17.2.1 类模板的语法653
17.2.2 编程实例:一个数组类655
小结659
自测题答案659
编程项目661
第18章 标准模板库663
概述664
预备知识664
18.1 迭代器664
18.1.1 using声明665
18.1.2 迭代器的基础知识665
18.1.3 陷阱:编译器问题669
18.1.4 迭代器的种类670
18.1.5 常量和可变迭代器672
18.1.6 逆向迭代器673
18.1.7 其他种类的迭代器675
18.2 容器676
18.2.1 顺序容器676
18.2.2 陷阱:迭代器和移除元素679
18.2.3 编程提示:容器中的类型定义679
18.2.4 容器配接器stack和queue679
18.2.5 关联容器set和map682
18.2.6 效率问题686
18.3 泛型算法688
18.3.1 运行时间和大O表示法688
18.3.2 容器访问运行时间691
18.3.3 不可修改的序列算法692
18.3.4 容器修改算法695
18.3.5 set算法696
18.3.6 排序算法697
小结698
自测题答案698
编程项目699
附录1 C++关键字703
附录2 操作符的优先级704
附录3 ASCII字符集705
附录4 部分库函数706
附录5 内联函数710
附录6 重载数据索引方括号711
附录7 this指针712
附录8 将操作符重载为成员操作符714