C++程序设计(原书第3版)

C++程序设计(原书第3版) pdf epub mobi txt 电子书 下载 2026

出版者:机械工业出版社
作者:梁勇 (Y.Daniel Liang)
出品人:
页数:574
译者:刘晓光
出版时间:2015-1-1
价格:79.00元
装帧:平装
isbn号码:9787111485148
丛书系列:计算机科学丛书
图书标签:
  • C++
  • 计算机
  • 编程
  • 計算機
  • programming
  • C/C++
  • C
  • C++
  • 程序设计
  • 编程
  • 计算机科学
  • 算法
  • 数据结构
  • 面向对象
  • 第三版
  • 教材
  • 入门
  • 学习
想要找书就要到 本本书屋
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

《C++程序设计(原书第3版)》采用“问题驱动”、“基础先行”和“实例和实践相结合”的方式,阐明了基本的C++特性。本书共分为三部分,第一部分介绍C++程序设计的基本概念,第二部分介绍面向对象编程方法,第三部分介绍算法与数据结构方面的内容。为了帮助学生更好地掌握相关知识,本书每章都包括以下模块:目标,引言,关键点,检查点,问题和实例研究,本章小结,在线测验,程序设计练习,提示,小窍门,警示和教学提示。

《C++程序设计(原书第3版)》可以作为高等院校计算机及相关专业C++程序设计课程的教材,也可以作为C++程序设计的自学参考书。

作者简介

梁勇,Y.Daniel Liang,普度大学终身教授,阿姆斯特朗亚特兰大州立大学计算机科学系教授。

目录信息

出版者的话
译者序
前言
致读者
第一部分 编程基础
第1章 计算机、程序和C++语言简介 2
1.1 引言 2
1.2 什么是计算机 3
1.2.1 CPU 4
1.2.2 位和字节 4
1.2.3 内存 5
1.2.4 存储设备 5
1.2.5 输入输出设备 6
1.2.6 通信设备 7
1.3 编程语言 8
1.3.1 机器语言 8
1.3.2 汇编语言 9
1.3.3 高级语言 9
1.4 操作系统 10
1.4.1 控制和监视系统活动 11
1.4.2 分配和指派系统资源 11
1.4.3 任务调度 11
1.5 C++语言的历史 11
1.6 一个简单的C++程序 12
1.7 C++程序开发周期 16
1.8 程序风格和文档 18
1.8.1 适当的注释和注释风格 18
1.8.2 正确的缩进和间距 18
1.9 编程错误 19
1.9.1 语法错误 19
1.9.2 运行时错误 19
1.9.3 逻辑错误 20
1.9.4 常见错误 20
关键术语 22
本章小结 22
在线测验 23
程序设计练习 23
第2章 程序设计基础 25
2.1 引言 25
2.2 编写简单的程序 25
2.3 从键盘读取输入 28
2.4 标识符 30
2.5 变量 30
2.6 赋值语句和赋值表达式 32
2.7 命名常量 33
2.8 数值数据类型及其运算 34
2.8.1 数值类型 34
2.8.2 数值文字常量 37
2.8.3 数值运算符 37
2.8.4 指数运算符 38
2.9 算术表达式和运算符优先级 39
2.10 实例研究:显示当前时间 41
2.11 简写运算符 43
2.12 自增、自减运算符 43
2.13 数值类型转换 45
2.14 软件开发流程 47
2.15 实例研究:计算给定金额的货币数量 51
2.16 常见错误 53
关键术语 54
本章小结 55
在线测验 55
程序设计练习 55
第3章 分支语句 60
3.1 引言 60
3.2 bool数据类型 61
3.3 if语句 62
3.4 双分支的if-else语句 64
3.5 嵌套的if语句和多分支的if-else语句 65
3.6 常见错误和陷阱 67
3.7 实例研究:计算身体质量指数 71
3.8 实例研究:计算税款 73
3.9 生成随机数 75
3.10 逻辑运算符 77
3.11 实例研究:确定闰年 81
3.12 实例研究:彩票 82
3.13 switch语句 83
3.14 条件表达式 86
3.15 运算符优先级和结合律 88
3.16 调试 89
关键术语 89
本章小结 90
在线测验 90
程序设计练习 90
第4章 数学函数、字符和字符串 99
4.1 引言 99
4.2 数学函数 100
4.2.1 三角函数 100
4.2.2 指数函数 100
4.2.3 近似函数 101
4.2.4 min、max和abs函数 101
4.2.5 实例研究:计算三角形的角 101
4.3 字符数据类型和操作符 103
4.3.1 ASCII码 103
4.3.2 从键盘读取一个字符 104
4.3.3 特殊字符的转义序列 104
4.3.4 数值类型和字符类型之间的相互转换 105
4.3.5 比较和测试字符 106
4.4 实例研究:生成随机字符 107
4.5 实例研究:猜生日 109
4.6 字符函数 112
4.7 实例研究:十六进制转换为十进制 113
4.8 字符串类型 114
4.8.1 字符串索引和下标操作符 115
4.8.2 连接字符串 116
4.8.3 比较字符串 116
4.8.4 读字符串 116
4.9 实例研究:使用字符串修改彩票程序 118
4.10 格式化控制台输出 119
4.10.1 setprecision(n)操作 120
4.10.2 修改操作 121
4.10.3 showpoint操作 121
4.10.4 setw(width)操作 122
4.10.5 left和right操作 122
4.11 简单的文件输入输出 123
4.11.1 写入文件 124
4.11.2 读取一个文件 125
关键术语 126
本章小结 126
在线测验 127
程序设计练习 127
第5章 循环 132
5.1 引言 132
5.2 while循环 133
5.2.1 实例研究:猜数字 135
5.2.2 循环设计策略 138
5.2.3 实例研究:多道减法测试 138
5.2.4 使用用户的确认控制循环 140
5.2.5 使用标记值控制循环 140
5.2.6 输入和输出重定向 141
5.2.7 从一个文件中读取所有的数据 142
5.3 do-while循环 144
5.4 for循环 145
5.5 使用哪种循环 149
5.6 嵌套循环 150
5.7 最小化数字错误 152
5.8 实例研究 153
5.8.1 求最大公约数 153
5.8.2 预测未来的学费 155
5.8.3 蒙特卡罗模拟 156
5.8.4 十进制转换为十六进制 156
5.9 关键字break和continue 158
5.10 实例研究:检查回文 161
5.11 实例研究:输出素数 163
关键术语 165
本章小结 165
在线测验 166
程序设计练习 166
第6章 函数 176
6.1 引言 176
6.2 函数定义 177
6.3 函数调用 178
6.4 无返回值函数 180
6.5 以传值方式传递参数 183
6.6 模块化代码 184
6.7 函数的重载 186
6.8 函数原型 189
6.9 缺省参数 190
6.10 内联函数 191
6.11 局部、全局和静态局部变量 192
6.11.1 for循环中变量的作用域 194
6.11.2 静态局部变量 194
6.12 以引用方式传递参数 197
6.13 常量引用参数 205
6.14 实例研究:十六进制转换为十进制 205
6.15 函数抽象和逐步求精 207
6.15.1 自顶向下设计 208
6.15.2 自顶向下或自底向上实现 209
6.15.3 实现细节 210
6.15.4 逐步求精的好处 214
关键术语 214
本章小结 215
在线测验 215
程序设计练习 215
第7章 一维数组和C字符串 225
7.1 引言 225
7.2 数组基础 226
7.2.1 声明数组 226
7.2.2 访问数组元素 227
7.2.3 数组初始化语句 228
7.2.4 处理数组 229
7.3 问题:彩票号码 232
7.4 问题:一副纸牌 235
7.5 数组作为函数参数 237
7.6 防止函数修改传递参数的数组 238
7.7 数组作为函数值返回 240
7.8 问题:计算每个字符的出现次数 241
7.9 搜索数组 244
7.9.1 顺序搜索方法 244
7.9.2 二分搜索方法 245
7.10 排序数组 247
7.11 C字符串 249
7.11.1 输入和输出C字符串 249
7.11.2 C字符串函数 250
7.11.3 使用strcpy和strncpy函数复制字符串 251
7.11.4 使用strcat和strncat函数拼接字符串 251
7.11.5 使用strcmp函数比较字符串 252
7.11.6 字符串和数字之间的转换 252
关键术语 253
本章小结 254
在线测验 254
程序设计练习 254
第8章 多维数组 263
8.1 引言 263
8.2 声明二维数组 263
8.3 操作二维数组 264
8.4 二维数组作为函数参数 267
8.5 问题:评定多项选择测试的成绩 268
8.6 问题:找最近邻点对 269
8.7 问题:数独 271
8.8 多维数组 274
8.8.1 问题:每日温度与湿度 275
8.8.2 问题:猜生日 277
本章小结 278
在线测验 278
程序设计练习 278
第二部分 面向对象编程
第9章 对象和类 292
9.1 引言 292
9.2 声明类 292
9.3 例:定义类和创建对象 294
9.4 构造函数 297
9.5 创建及使用对象 298
9.6 类定义和类实现的分离 301
9.7 避免多次包含 303
9.8 类中的内联函数 305
9.9 数据域封装 305
9.10 变量作用域 308
9.11 类抽象和封装 310
关键术语 314
本章小结 314
在线测验 315
程序设计练习 315
第10章 面向对象思想 318
10.1 引言 318
10.2 string类 318
10.2.1 构造一个字符串 319
10.2.2 追加字符串 319
10.2.3 字符串赋值 319
10.2.4 函数at、clear、erase及empty 320
10.2.5 函数length、size、capacity和c_str() 320
10.2.6 字符串比较 321
10.2.7 获取子串 321
10.2.8 字符串搜索 322
10.2.9 字符串插入和替换 322
10.2.10 字符串运算符 323
10.2.11 把数字转换为字符串 324
10.2.12 字符串分割 324
10.2.13 实例研究:字符串替换 324
10.3 对象作为函数参数 327
10.4 对象数组 329
10.5 实例成员和静态成员 331
10.6 只读成员函数 335
10.7 从对象的角度思考 337
10.8 对象合成 342
10.9 实例研究:StackOfIntegers类 344
10.10 类设计准则 346
10.10.1 内聚 346
10.10.2 一致 346
10.10.3 封装 347
10.10.4 清晰 347
10.10.5 完整 347
10.10.6 实例与静态 347
关键术语 348
本章小结 348
在线测验 348
程序设计练习 348
第11章 指针及动态内存管理 353
11.1 引言 353
11.2 指针基础 353
11.3 用typedef定义同义类型 359
11.4 常量指针 359
11.5 数组和指针 360
11.6 函数调用时传递指针参数 363
11.7 从函数中返回指针 367
11.8 有用的数组函数 368
11.9 动态持久内存分配 369
11.10 创建及访问动态对象 373
11.11 this指针 375
11.12 析构函数 376
11.13 实例研究:Course类 379
11.14 拷贝构造函数 382
11.15 自定义拷贝构造函数 384
关键术语 387
本章小结 387
在线测验 388
程序设计练习 388
第12章 模板、向量和栈 393
12.1 引言 393
12.2 模板基础 393
12.3 例:一个通用排序函数 397
12.4 模板类 399
12.5 改进Stack类 405
12.6 C++向量类 407
12.7 用vector类替换数组 410
12.8 实例研究:表达式计算 413
关键术语 417
本章小结 417
在线测验 417
程序设计练习 418
第13章 文件输入输出 424
13.1 引言 424
13.2 文本输入输出 425
13.2.1 向文件中写入数据 425
13.2.2 从文件中读取数据 426
13.2.3 检测文件是否存在 427
13.2.4 检测文件结束 427
13.2.5 让用户输入文件名 429
13.3 格式化输出 430
13.4 函数:getline、get和put 431
13.5 fstream和文件打开模式 434
13.6 检测流状态 435
13.7 二进制输入输出 437
13.7.1 write函数 438
13.7.2 read函数 439
13.7.3 例:二进制数组I/O 440
13.7.4 例:二进制对象I/O 440
13.8 随机访问文件 444
13.9 更新文件 447
关键术语 448
本章小结 448
在线测验 448
程序设计练习 449
第14章 运算符重载 452
14.1 引言 452
14.2 Rational类 453
14.3 运算符函数 458
14.4 重载[]运算符 460
14.5 重载简写运算符 462
14.6 重载一元运算符 462
14.7 重载++和--运算符 463
14.8 友元函数和友元类 464
14.9 重载]运算符 466
14.10 自动类型转换 468
14.10.1 转换为基本数据类型 468
14.10.2 转换为对象类型 469
14.11 定义重载运算符的非成员函数 469
14.12 带有重载运算符函数的Rational类 470
14.13 重载赋值运算符 477
关键术语 481
本章小结 481
在线测验 481
程序设计练习 481
第15章 继承和多态 484
15.1 引言 484
15.2 基类和派生类 484
15.3 泛型程序设计 492
15.4 构造函数和析构函数 493
15.4.1 调用基类构造函数 493
15.4.2 构造函数链和析构函数链 494
15.5 函数重定义 497
15.6 多态 499
15.7 虚函数和动态绑定 500
15.8 关键字protected 503
15.9 抽象类和纯虚函数 504
15.10 类型转换:static_cast 和 dynamic_cast 512
关键术语 515
本章小结 516
在线测验 516
程序设计练习 517
第16章 异常处理 518
16.1 引言 518
16.2 异常处理概述 518
16.3 异常处理机制的优点 522
16.4 异常类 523
16.5 自定义异常类 527
16.6 多重异常捕获 531
16.7 异常的传播 535
16.8 重抛出异常 537
16.9 异常说明 538
16.10 何时使用异常机制 539
关键术语 540
本章小结 540
在线测验 540
程序设计练习 541
第三部分 算法和数据结构
第17章 递归 544
17.1 引言 544
17.2 例:阶乘 545
17.3 实例研究:斐波那契数 548
17.4 用递归方法求解问题 550
17.5 递归辅助函数 552
17.5.1 选择排序 553
17.5.2 二分搜索 555
17.6 汉诺塔 556
17.7 八皇后问题 559
17.8 递归与循环 561
17.9 尾递归 562
关键术语 563
本章小结 563
在线测验 563
程序设计练习 563
第18章 开发高效的算法
第19章 排序
第20章 链表、队列和优先队列
第21章 二分搜索树
第22章 STL容器
第23章 STL算法
第24章 图及其应用
第25章 加权图及其应用
第26章 平衡二叉树和伸展树
附录
附录A C++关键字 568
附录B ASCII字符集 569
附录C 运算符优先级表 570
附录D 数字系统 572
附录E 位运算 575
· · · · · · (收起)

读后感

评分

作者梁勇,美国普度大学终身教授,据说在美国大学中他编写的Java教程采用率最高。国内的计算机教材大都看得乏味,对国人写的书很排斥,一个美籍华人写的能有多好,我想。 虽然有些印刷错误和翻译错误,然而这是给我带来惊喜的一本书。叙述简洁全面而通俗,实例图表对理解编程很...  

评分

作者梁勇,美国普度大学终身教授,据说在美国大学中他编写的Java教程采用率最高。国内的计算机教材大都看得乏味,对国人写的书很排斥,一个美籍华人写的能有多好,我想。 虽然有些印刷错误和翻译错误,然而这是给我带来惊喜的一本书。叙述简洁全面而通俗,实例图表对理解编程很...  

评分

作者梁勇,美国普度大学终身教授,据说在美国大学中他编写的Java教程采用率最高。国内的计算机教材大都看得乏味,对国人写的书很排斥,一个美籍华人写的能有多好,我想。 虽然有些印刷错误和翻译错误,然而这是给我带来惊喜的一本书。叙述简洁全面而通俗,实例图表对理解编程很...  

评分

书还行。不过光看书自学觉得挺累的,有些操作,好多遍都搞不明白。我找了一个猎豹网校,上面都是这类IT课程,看着视频,有老师教,学起来更容易些。不懂还可以随时请教的,觉得还不错。

评分

这本书是学校的教材,是我觉得大学教材中最好的一本英文教材。 而且,比起同类书籍,如《C++Primer》,要简单易懂得多。 个人觉得《C++Primer》不适合做入门书籍,而这本,恰到好处。 例子丰富,简单易懂,没有晦涩的英文单词,非常适合新手。 书中每一个部分都会提取相应的段...  

用户评价

评分

我对这本书的“慢热”特性印象深刻。刚开始读的时候,可能会觉得进度略显缓慢,因为它花了大量的篇幅来巩固基础,比如对数据类型的大小、内存对齐的讨论,这些看似基础,却直接影响到后续理解底层性能。但正是这种扎实的铺垫,让我在学习到后续更复杂的模板元编程或者并发编程时,能够游刃有余。例如,它在讲解多线程和互斥锁时,没有直接跳到 `std::thread`,而是先回顾了操作系统中进程与线程的基本概念,然后才引入 C++ 标准库提供的并发工具。这种自底向上的构建知识体系的方式,极大地增强了知识的稳定性和迁移性。对于那些希望从 C 语言背景平滑过渡到现代 C++ 的开发者来说,这本书的处理方式简直是教科书级别的。它教会的不仅仅是 C++ 的语法,更是一种严谨的、注重细节的程序设计哲学。

评分

这本教材的讲解风格真是让人耳目一新,不同于市面上很多教材那种干巴巴的理论堆砌。作者在阐述 C++ 的核心概念时,总能找到非常贴合实际的例子来做支撑。比如,初学指针和引用的时候,很多书都是直接上抽象定义,搞得人云里雾里,但这本书里,它会用“内存地址就像房子的门牌号”这样的比喻来循序渐进地引导,然后才慢慢过渡到更复杂的内存管理和动态分配。我特别欣赏它对面向对象编程(OOP)思想的剖析,不仅仅是罗列继承、多态这些特性,而是深入挖掘了为什么需要 OOP,它解决了传统编程中的哪些痛点。当你真正理解了封装的意义,而不是仅仅记住 `private` 和 `public` 关键字的区别时,代码的结构感和可维护性就会发生质的变化。读完关于模板的那几章,我才真正体会到 C++ 泛型编程的强大威力,它让我在编写通用算法时,摆脱了为每种数据类型重复编写代码的困境,代码的复用性得到了极大的提升。总的来说,它不是那种只教你怎么写出能跑的代码的书,而是教你怎么写出优雅、高效且易于理解的 C++ 代码的指南。

评分

这本书最打动我的地方,在于它对 C++ 语言的“演进”历程给予了足够的尊重和解释。它并没有将 C++ 视为一个静止的、完美的语言,而是展现了它如何从 C 语言的延伸,一步步发展到今天的多范式编程工具。在讲解运算符重载时,作者会适当地提醒读者,虽然语言允许你重载几乎所有操作符,但从代码可读性和维护性的角度出发,应该克制使用,这体现了一种成熟的编程价值观。此外,书中对 C++ 标准库组件的讲解,总是能体现出其设计哲学上的优雅性,比如迭代器模式如何统一了对序列容器和关联容器的访问方式,这是一种极其巧妙的设计。读完后,我感觉自己对 C++ 的“为什么”比“怎么做”有了更深刻的理解。它培养了一种批判性思维,让你在面对新的库或框架时,能够去探究其背后的设计决策,而不是盲目地接受。

评分

我作为一个在工业界摸爬滚打了一段时间的工程师,重新拾起 C++ 的经典特性时,发现这本书在细节处理上的严谨性非常出色。很多参考书往往在涉及 C++11 之后的新特性时,要么一带而过,要么仅仅停留在语法层面,但原书第三版在这方面做得相当到位。对于右值引用和完美转发这些进阶概念,它没有简单地抛出代码示例,而是深入剖析了其背后的性能优化动机,比如如何避免不必要的拷贝构造,这对于性能敏感的系统编程来说至关重要。我记得在讲到 RAII(资源获取即初始化)时,作者清晰地展示了如何利用智能指针(`std::unique_ptr` 和 `std::shared_ptr`)来替代传统的手动资源管理,极大地减少了资源泄露的风险,这简直是现代 C++ 实践的基石。此外,关于 STL 容器和算法的讲解,也体现了高度的工程化思维,它不仅告诉你 `std::vector` 比链表在随机访问时快,更解释了背后的空间局部性和缓存命中率的原理。这本书真正做到了理论与实践的完美结合,适合有一定基础,希望深入理解 C++ 内部机制的读者。

评分

这本书的排版和结构设计实在太值得称赞了,阅读体验流畅度极高。很多技术书籍密密麻麻的文字和代码块很容易让人产生畏难情绪,但此书通过清晰的层次结构和适度的留白,让复杂的概念得以有效分解。我尤其喜欢它在章节末尾设置的“深入思考”或“常见陷阱”部分。例如,在讨论虚函数和继承机制时,它特意用一个小节指出了多重继承可能导致的菱形继承问题及其解决方案,这些都是初学者容易忽略但面试中又经常被问到的点。再者,书中的代码示例总是简洁而富有代表性,每一个示例都仿佛经过精心雕琢,恰到好处地演示了当前章节的核心知识点,没有多余的干扰代码。而且,作者在描述 C++ 标准库时,往往会引用到具体的标准文档编号,这对于需要追溯标准定义的专业人士来说,无疑是一个巨大的便利。这使得这本书不仅是一本学习手册,更像是一本可以随时翻阅的权威参考资料。

评分

入门必备,很详细

评分

作为基本入门还是可以的,不错的入门书籍。

评分

暂时读了一半,有机会继续看下去吧,也许以后再也用不到C++了

评分

入门必备,很详细

评分

看完了,但没做练习题,那岂不是看了就忘…慢慢补作业补作业…

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2026 onlinetoolsland.com All Rights Reserved. 本本书屋 版权所有