完美C++(第5版)(双色)txt,chm,pdf,epub,mobi下载 作者:薛正华/沈庚/韦远科 出版社: 电子工业出版社 译者:薛正华/沈庚/韦远科 出版年: 2014-6-1 页数: 788 定价: 148.00元 ISBN: 9787121231988 内容简介 · · · · · ·《完美C++(第5版)》为读者提供了一个学习、理解和掌握 C++编程语言的全面视图,覆盖面广、实用性强。书中介绍了 C++的基本数据类型,如字符串、数组、指针、结构体、类等,同时也详细描述了面向对象编程语言的特性:封装、继承和多态,以及这些特性在 C++语言中的具体使用方式。本书的后面章节还重点介绍了模板、链式数据结构、标准模板库以及异常处理等C++语言的进阶编程知识。这些知识在从事具体编程工作时会经常使用到。 《完美C++(第5版)》对C++的一些重点知识,辅以实例进行了重点讲解,特别是对一些易混淆、易犯错的知识点,专门以“陷阱”的组织方式进行深入分析和讨论,帮助读者更好地理解和掌握。《完美C++(第5版)》中各章均含有大量例子及完整的代码段和分析,帮助读者强化对关键概念的理解,以及对主题的掌握。各章还配有丰富的自测习题以及答案,帮助读者进一步提升... 目录 · · · · · ·第1章 C++ 基础 11.1 C++简介 2 C++语言的起源 2 C++与面向对象编程 3 C++的特点 3 C++术语 3 · · · · · ·() 第1章 C++ 基础 1 1.1 C++简介 2 C++语言的起源 2 C++与面向对象编程 3 C++的特点 3 C++术语 3 C++程序示例 3 1.2 变量、表达式及赋值语句 5 标识符 5 变量 6 赋值语句 8 string类简介 9 陷阱:未初始化变量 9 提示:采用有意义的变量名 10 更多赋值语句 11 赋值兼容性 11 字面值 12 转义序列 14 命名常量 14 算数运算符和表达式 16 整数和浮点数除法 17 陷阱:全整数除法 17 类型转换 18 自增和自减运算符 20 陷阱:求值顺序 21 1.3 控制台输入/输出 22 使用cout输出 22 换行符 23 提示:以\n或endl结束程序 24 格式化浮点数 24 用cerr输出 25 用cin输入 25 提示:输入/输出中的换行 28 1.4 编程风格 28 注释 28 1.5 库与命名空间 29 库与include命令 29 命名空间 29 陷阱:库名的问题 30 第2章 流程控制 37 2.1 布尔表达式 38 创建布尔表达式 38 陷阱:不等式连写 39 布尔表达式求值 40 优先级规则 41 陷阱:整数值用作布尔值 44 2.2 分支机制 45 if-else语句 45 复合语句 47 陷阱:用=代替== 47 省略else 49 嵌套语句 49 多分支if-else语句 49 switch语句 50 陷阱:遗漏switch语句中的break 52 提示:在菜单中使用switch语句 52 枚举类型 53 条件运算符 53 2.3 循环 54 while和do-while循环 54 再谈自增和自减运算符 57 逗号运算符 58 for语句 59 提示:重复N次的循环 61 陷阱:for语句中额外的分号 62 陷阱:无限循环 62 break与continue语句 65 嵌套循环 67 2.4 文件输入简介 67 通过ifstream读取文本文件内容 68 第3章 函数基础 81 3.1 预定义函数 82 带有返回值的预定义函数 82 预定义的void函数 86 随机数生成器 88 3.2 自定义函数 91 定义带有返回值的函数 91 函数声明的另一种形式 93 陷阱:参数顺序的错误 93 调用函数的函数 94 示例:一个四舍五入的函数 94 返回布尔值的函数 96 定义void函数 96 void函数中的return语句 98 前提条件和运行结果 98 main函数 100 递归函数 100 3.3 作用域规则 101 局部变量 101 过程抽象 103 全局常量和全局变量 104 语句块 106 嵌套作用域 107 提示:在分支和循环语句中使用函数调用 107 for循环体中的变量声明 107 第4章 函数与重载 117 4.1 参数 118 传值参数 118 初识引用参数 120 引用传递调用机制详解 122 常量引用参数 124 示例:函数swapValues 124 提示:一种操作,而不是代码 125 混合参数列表 126 提示:使用何种参数 126 陷阱:无意的局部变量 128 提示:选择形参的名字 129 示例:买比萨 129 4.2 重载与默认实参 132 重载简介 132 陷阱:自动类型转换与重载 134 重载解析的规则 135 示例:改写“买比萨程序” 136 默认参数 138 4.3 函数的测试和调试 140 assert宏 140 占位程序和驱动程序 141 第5章 数组 151 5.1 数组简介 152 数组的声明和引用 152 提示:对数组使用for循环 154 陷阱:数组的索引始终是从0开始的 154 提示:使用已定义的常量作为数组的大小 154 内存中的数组 155 陷阱:数组越界 157 数组的初始化 157 5.2 函数中的数组 159 索引变量作为函数实参 159 整个数组作为函数实参 160 const修饰符 163 陷阱:const参数的不一致使用 164 返回数组的函数 164 示例:生产图表 165 5.3 用数组编程 169 部分填充的数组 169 提示:不要吝啬形参的使用 169 示例:查询数组 172 示例:给数组排序 174 5.4 多维数组 178 多维数组基础 178 多维数组参数 179 示例:使用二维数组的记分程序 179 第6章 结构体和类 195 6.1 结构体 196 结构体类型 198 陷阱:漏掉结构体定义末尾的分号 200 结构体作为函数参数 201 提示:使用多重结构体 201 结构体的初始化 204 6.2 类 206 定义类和成员函数 206 封装 211 公有成员和私有成员 211 取值和赋值函数 214 提示:接口和实现的分离 216 提示:封装的测试 216 结构体与类 217 提示:对象思考 217 第7章 构造函数及其他工具 225 7.1 构造函数 226 构造函数的定义 226 陷阱:无参构造函数 230 构造函数的显式调用 230 提示:总是为类定义一个默认构造函数 231 示例:BankAccount类 233 类类型成员变量 238 7.2 其他工具 241 const修饰符 241 陷阱:const的不一致用法 243 内联函数 246 静态成员 248 嵌套类和局部类定义 251 7.3 向量——标准模板库预览 251 向量基础 252 陷阱:方括号的索引超过向量的大小 253 提示:向量的赋值 254 效率问题 255 第8章 运算符重载、友元和引用 263 8.1 基本运算符的重载 264 重载基础 264 提示:构造函数可以返回一个对象 269 返回常量类型 270 一元运算符的重载 272 作为成员函数的运算符重载 272 提示:类可以访问其所有对象 275 重载函数调用符( ) 275 陷阱:重载 &&、||及逗号运算符 275 8.2 友元函数与自动类型转换 276 构造函数的自动类型转换 276 陷阱:成员运算符和自动类型转换 277 友元函数 277 友元类 280 陷阱:不支持友元的编译器 281 8.3 引用和其他运算符重载 282 引用 282 提示:返回类的成员变量 283 重载“>>”和“<<” 284 提示:应使用什么样的返回值类型 289 赋值运算符 291 重载自增和自减运算符 291 重载数组运算符[ ] 294 基于左值和右值的重载 296 第9章 字符串 303 9.1 字符串类型数组 304 C字符串值和C字符串变量 304 陷阱:对C字符串使用 “=” 和 “==” 308 <cstring>中的其他函数 309 示例: 命令行参数 311 C字符串的输入/输出 313 9.2 字符操作工具 315 字符的输入/输出 315 成员函数get和put 315 示例:使用换行函数检查输入 318 陷阱:输入时没有处理‘\n’ 319 成员函数putback、peek和ignore 320 字符操作函数 322 陷阱:函数toupper和tolower返回int型数值 324 9.3 标准string类 325 标准string类简介 325 string类的输入和输出 327 提示:getline函数的其他版本 330 陷阱:对cin同时使用>>和getline 331 使用string类处理字符串 331 示例: 回文检测 335 string类对象和C字符串的转换 338 第10章 指针和动态数组 347 10.1 指针 348 指针变量 349 内存管理基础 355 陷阱:悬空指针 357 动态变量和自动变量 358 提示:定义指针类型 358 陷阱:指针用作传值参数 360 指针的应用 361 10.2 动态数组 362 数组变量和指针变量 362 创建并使用动态数组 363 示例:一个返回数组的函数 366 指针运算 368 多维动态数组 368 10.3 类、指针和动态数组 371 运算符-> 371 this指针 371 重载赋值运算符 372 示例:部分填充数组的类 378 析构函数 380 拷贝构造函数 381 第11章 分散编译和命名空间 391 11.1 分散编译 392 封装回顾 392 头文件和实现文件 393 示例:DigitalTime类 399 提示:可重用的组件 401 使用#ifndef 401 提示:定义其他库 403 11.2 命名空间 404 命名空间和using指令 404 创建一个命名空间 406 using声明 409 限定名称 410 提示:为命名空间取名 412 示例:一个定义在命名空间中的类 412 无名称的命名空间 413 陷阱:混淆全局命名空间和无名称命名空间 418 提示:用无名称命名空间代替static修饰符 419 提示:隐藏帮助函数 419 嵌套命名空间 420 提示:应该如何指明使用的命名空间 420 第12章 流和文件I/O操作 429 12.1 I/O流 430 文件I/O 431 陷阱:流变量的使用限制 434 向文件追加输出内容 435 提示: 打开文件的另一种方法 436 提示:检查一个文件是否已被成功打开 439 字符I/O 440 文件结束检查 440 12.2 I/O流工具 444 使用文件名输入 444 使用流函数进行格式化输出 444 控制符 447 保存设置的标记 448 更多的输出流成员函数 449 示例:整理文件格式 450 示例:编辑文本文件 452 12.3 流的继承层次:继承概述 455 流之间的继承 455 示例:另一版本的newLine函数 457 使用类stringstream解析字符串 460 12.4 随机文件存取 462 第13章 递归 477 13.1 递归void函数 478 示例:竖直排列的数字 479 跟踪一个递归调用 481 深入理解递归 484 陷阱:无限递归 485 递归调用中的栈 487 陷阱:栈溢出 488 递归与迭代的比较 488 13.2 有返回值的递归函数 489 有返回值的递归函数的一般形式 489 示例:另一个幂函数 490 交叉递归 494 13.3 按递归方式思考问题 496 递归设计技巧 496 二分查找 497 编码 498 检查递归是否正确 501 效率 502 第14章 继承 513 14.1 继承基础 514 派生类 514 派生类的构造函数 522 陷阱:使用基类的私有成员变量 524 陷阱:私有成员函数是无法被有效继承的 526 protected限定符 526 成员函数的重定义 529 重定义与重载 530 访问被重定义过的基类函数 531 不可被继承的函数 532 14.2 利用继承编程 533 派生类中的赋值运算符和拷贝构造函数 533 派生类的析构函数 534 示例:可备份的部分填充的数组 534 陷阱:赋值运算符两边是同一个对象 541 示例:PFArrayDBak的另一种实现 542 提示:一个类可以访问本类所有对象的私有成员 544 提示:“是一个”和“有一个” 544 保护继承和私有继承 545 多继承 546 第15章 多态与虚函数 555 15.1 虚函数基础 556 延迟绑定 556 C++中的虚函数 557 提示:virtual属性会被继承 563 提示:什么时候应该使用虚函数 563 陷阱:没有对虚成员函数进行定义 564 抽象类与纯虚函数 564 示例:抽象类 565 15.2 指针和虚函数 567 虚函数与扩展类型兼容性 567 陷阱:切片问题 571 提示:使析构函数成为虚函数 572 向下类型转换和向上类型转换 573 C++如何实现虚函数 574 第16章 模板 585 16.1 函数模板 586 函数模板语法 587 陷阱:编译器的复杂性 590 提示:如何定义模板 592 示例:一个通用的排序函数 592 陷阱:使用模板时误用了不正确的数据类型 596 16.2 类模板 597 类模板语法 598 示例:一个数组模板类 601 模板中的vector和 basic_string 606 16.3 模板和继承 606 示例: 带备份的部分填充数组模板类 607 第17章 链式数据结构 617 17.1 节点和链表 619 节点 619 链表 623 在链表头插入节点 625 陷阱:丢失节点 627 插入和删除链表内的节点 628 陷阱:对动态数据结构使用赋值运算符 631 搜索链表 631 搜索函数伪代码 632 双向链表 633 为双向链表增加一个节点 635 从双向链表中删除一个节点 635 示例: 使用双向链表实现的通用排序模板函数 641 17.2 链表的应用 644 示例:栈模板类 644 示例:队列模板类 650 提示:命名空间的注解 652 友元类以及类似的其他选择 653 示例:包含节点链的哈希表 655 字符串哈希函数 656 哈希表的效率 660 示例:集合(set)模板类 661 集合的基本操作 662 链表创建的集合的效率 667 17.3 迭代器 668 指针作为迭代器 668 迭代器类 669 示例:迭代器类 670 17.4 树 676 树的属性 676 示例:树模板类 678 第18章 异常处理 695 18.1 异常处理基础 696 异常处理的简单样例 697 定义自己的异常类 704 多个抛出和捕获 704 陷阱:首先捕获比较明确的异常 707 提示:异常类可以很简单 708 在函数中抛出异常 708 异常说明 710 陷阱:派生类中的异常说明 712 18.2 异常处理的编程技术 713 抛出异常的时机 713 陷阱:未被捕获的异常 714 陷阱:嵌套try-catch块 715 陷阱:过度使用异常 715 异常类层次结构 715 可用内存测试 716 再次抛出异常 716 第19章 标准模板库 721 19.1 迭代器 723 迭代器基础 723 陷阱:编译器问题 726 迭代器的种类 728 常量迭代器和可变迭代器 731 反向迭代器 732 其他种类的迭代器 733 19.2 容器 734 连续容器 734 陷阱:迭代器和删除元素 738 提示:容器中的类型定义 739 容器适配器栈和队列 739 陷阱:底层容器 740 关联式容器set和map 742 效率 747 19.3 泛型算法 748 运行时间和大-O表示法 749 容器访问运行时间 752 不改变序列的算法 753 改变序列的算法 757 集合算法 758 排序算法 7601 · · · · · · () |
五星推荐
必看书目之一,很多年前就有所耳闻,现在终于入手了
很多历史的细节。
脑洞之大,角度只独特让我震撼