完美C++(第5版)

副标题:无

作   者:(美)萨维奇,(美)默克 著,薛正华,沈庚,韦远科 译

分类号:

ISBN:9787121231988

微信扫一扫,移动浏览光盘

简介

《完美C++(第5版)》为读者提供了一个学习、理解和掌握C++编程语言的全面视图,覆盖面广、实用性强。书中介绍了C++的基本数据类型,如字符串、数组、指针、结构体、类等,同时也详细描述了面向对象编程语言的特性:封装、继承和多态,以及这些特性在C++语言中的具体使用方式。本书的后面章节还重点介绍了模板、链式数据结构、标准模板库以及异常处理等C++语言的进阶编程知识。这些知识在从事具体编程工作时会经常使用到。  《完美C++(第5版)》对C++的一些重点知识,辅以实例进行了重点讲解,特别是对一些易混淆、易犯错的知识点,专门以“陷阱”的组织方式进行深入分析和讨论,帮助读者更好地理解和掌握。《完美C++(第5版)》中各章均含有大量例子及完整的代码段和分析,帮助读者强化对关键概念的理解,以及对主题的掌握。各章还配有丰富的自测习题以及答案,帮助读者进一步提升对C++知识的理解以及实际动手编程能力。  原书由知名学者所著,历经多个版本,根据C++技术的发展,内容不断完善、丰富,体系完整、实践性强。  《完美C++(第5版)》可以作为高等院校学习编程基本知识以及C++编程语言课程的教材,也可以作为有C++编程经验者的参考书。

目录

1.1 C++简介 
  C++语言的起源 
  C++与面向对象编程 
  C++的特点 
  C++术语 
  C++程序示例 
 1.2 变量、表达式及赋值语句 
  标识符 
  变量 
  赋值语句 
  string类简介 
  陷阱:未初始化变量 
  提示:采用有意义的变量名 
  更多赋值语句 
  赋值兼容性 
  字面值 
  转义序列 
  命名常量 
  算数运算符和表达式 
  整数和浮点数除法 
  陷阱:全整数除法 
  类型转换 
  自增和自减运算符 
  陷阱:求值顺序 
 1.3 控制台输入/输出 
  使用cout输出 
  换行符 
  提示:以\n或endl结束程序 
  格式化浮点数 
  用cerr输出 
  用cin输入 
  提示:输入/输出中的换行 
 1.4 编程风格 
  注释 
 1.5 库与命名空间 
  库与include命令 
  命名空间 
  陷阱:库名的问题 
第2章 流程控制 
 2.1 布尔表达式 
  创建布尔表达式 
  陷阱:不等式连写 
  布尔表达式求值 
  优先级规则 
  陷阱:整数值用作布尔值 
 2.2 分支机制 
  if-else语句 
  复合语句 
  陷阱:用=代替== 
  省略else 
  嵌套语句 
  多分支if-else语句 
  switch语句 
  陷阱:遗漏switch语句中的break 
  提示:在菜单中使用switch语句 
  枚举类型 
  条件运算符 
 2.3 循环 
  while和do-while循环 
  再谈自增和自减运算符 
  逗号运算符 
  for语句 
  提示:重复N次的循环 
  陷阱:for语句中额外的分号 
  陷阱:无限循环 
  break与continue语句 
  嵌套循环 
 2.4 文件输入简介 
  通过ifstream读取文本文件内容 
第3章 函数基础 
 3.1 预定义函数 
  带有返回值的预定义函数 
  预定义的void函数 
  随机数生成器 
 3.2 自定义函数 
  定义带有返回值的函数 
  函数声明的另一种形式 
  陷阱:参数顺序的错误 
  调用函数的函数 
  示例:一个四舍五入的函数 
  返回布尔值的函数 
  定义void函数 
  void函数中的return语句 
  前提条件和运行结果 
  main函数 
  递归函数 
 3.3 作用域规则 
  局部变量 
  过程抽象 
  全局常量和全局变量 
  语句块 
  嵌套作用域 
  提示:在分支和循环语句中使用函数调用 
  for循环体中的变量声明 
第4章 函数与重载 
 4.1 参数 
  传值参数 
  初识引用参数 
  引用传递调用机制详解 
  常量引用参数 
  示例:函数swapValues 
  提示:一种操作,而不是代码 
  混合参数列表 
  提示:使用何种参数 
  陷阱:无意的局部变量 
  提示:选择形参的名字 
  示例:买比萨 
 4.2 重载与默认实参 
  重载简介 
  陷阱:自动类型转换与重载 
  重载解析的规则 
  示例:改写“买比萨程序” 
  默认参数 
 4.3 函数的测试和调试 
  assert宏 
  占位程序和驱动程序 
第5章 数组 
 5.1 数组简介 
  数组的声明和引用 
  提示:对数组使用for循环 
  陷阱:数组的索引始终是从0开始的 
  提示:使用已定义的常量作为数组的大小 
  内存中的数组 
  陷阱:数组越界 
  数组的初始化 
 5.2 函数中的数组 
  索引变量作为函数实参 
  整个数组作为函数实参 
  const修饰符 
  陷阱:const参数的不一致使用 
  返回数组的函数 
  示例:生产图表 
 5.3 用数组编程 
  部分填充的数组 
  提示:不要吝啬形参的使用 
  示例:查询数组 
  示例:给数组排序 
 5.4 多维数组 
  多维数组基础 
  多维数组参数 
  示例:使用二维数组的记分程序 
第6章 结构体和类 
 6.1 结构体 
  结构体类型 
  陷阱:漏掉结构体定义末尾的分号 
  结构体作为函数参数 
  提示:使用多重结构体 
  结构体的初始化 
 6.2 类 
  定义类和成员函数 
  封装 
  公有成员和私有成员 
  取值和赋值函数 
  提示:接口和实现的分离 
  提示:封装的测试 
  结构体与类 
  提示:对象思考 
第7章 构造函数及其他工具 
 7.1 构造函数 
  构造函数的定义 
  陷阱:无参构造函数 
  构造函数的显式调用 
  提示:总是为类定义一个默认构造函数 
  示例:BankAccount类 
  类类型成员变量 
 7.2 其他工具 
  const修饰符 
  陷阱:const的不一致用法 
  内联函数 
  静态成员 
  嵌套类和局部类定义 
 7.3 向量——标准模板库预览 
  向量基础 
  陷阱:方括号的索引超过向量的大小 
  提示:向量的赋值 
  效率问题 
第8章 运算符重载、友元和引用 
 8.1 基本运算符的重载 
  重载基础 
  提示:构造函数可以返回一个对象 
  返回常量类型 
  一元运算符的重载 
  作为成员函数的运算符重载 
  提示:类可以访问其所有对象 
  重载函数调用符( ) 
  陷阱:重载 &&、||及逗号运算符 
 8.2 友元函数与自动类型转换 
  构造函数的自动类型转换 
  陷阱:成员运算符和自动类型转换 
  友元函数 
  友元类 
  陷阱:不支持友元的编译器 
 8.3 引用和其他运算符重载 
  引用 
  提示:返回类的成员变量 
  重载“>>”和“<<” 
  提示:应使用什么样的返回值类型 
  赋值运算符 
  重载自增和自减运算符 
  重载数组运算符[ ] 
  基于左值和右值的重载 
第9章 字符串 
 9.1 字符串类型数组 
  C字符串值和C字符串变量 
  陷阱:对C字符串使用 “=” 和 “==” 
  中的其他函数 
  示例: 命令行参数 
  C字符串的输入/输出 
 9.2 字符操作工具 
  字符的输入/输出 
  成员函数get和put 
  示例:使用换行函数检查输入 
  陷阱:输入时没有处理‘\n’ 
  成员函数putback、peek和ignore 
  字符操作函数 
  陷阱:函数toupper和tolower返回int型数值 
 9.3 标准string类 
  标准string类简介 
  string类的输入和输出 
  提示:getline函数的其他版本 
  陷阱:对cin同时使用>>和getline 
  使用string类处理字符串 
  示例: 回文检测 
  string类对象和C字符串的转换 
第10章 指针和动态数组 
 10.1 指针 
  指针变量 
  内存管理基础 
  陷阱:悬空指针 
  动态变量和自动变量 
  提示:定义指针类型 
  陷阱:指针用作传值参数 
  指针的应用 
 10.2 动态数组 
  数组变量和指针变量 
  创建并使用动态数组 
  示例:一个返回数组的函数 
  指针运算 
  多维动态数组 
 10.3 类、指针和动态数组 
  运算符-> 
  this指针 
  重载赋值运算符 
  示例:部分填充数组的类 
  析构函数 
  拷贝构造函数 
第11章 分散编译和命名空间 
 11.1 分散编译 
  封装回顾 
  头文件和实现文件 
  示例:DigitalTime类 
  提示:可重用的组件 
  使用#ifndef 
  提示:定义其他库 
 11.2 命名空间 
  命名空间和using指令 
  创建一个命名空间 
  using声明 
  限定名称 
  提示:为命名空间取名 
  示例:一个定义在命名空间中的类 
  无名称的命名空间 
  陷阱:混淆全局命名空间和无名称命名空间 
  提示:用无名称命名空间代替static修饰符 
  提示:隐藏帮助函数 
  嵌套命名空间 
  提示:应该如何指明使用的命名空间 
第12章 流和文件I/O操作 
 12.1 I/O流 
  文件I/O 
  陷阱:流变量的使用限制 
  向文件追加输出内容 
  提示: 打开文件的另一种方法 
  提示:检查一个文件是否已被成功打开 
  字符I/O 
  文件结束检查 
 12.2 I/O流工具 
  使用文件名输入 
  使用流函数进行格式化输出 
  控制符 
  保存设置的标记 
  更多的输出流成员函数 
  示例:整理文件格式 
  示例:编辑文本文件 
 12.3 流的继承层次:继承概述 
  流之间的继承 
  示例:另一版本的newLine函数 
  使用类stringstream解析字符串 
 12.4 随机文件存取 
第13章 递归 
 13.1 递归void函数 
  示例:竖直排列的数字 
  跟踪一个递归调用 
  深入理解递归 
  陷阱:无限递归 
  递归调用中的栈 
  陷阱:栈溢出 
  递归与迭代的比较 
 13.2 有返回值的递归函数 
  有返回值的递归函数的一般形式 
  示例:另一个幂函数 
  交叉递归 
 13.3 按递归方式思考问题 
  递归设计技巧 
  二分查找 
  编码 
  检查递归是否正确 
  效率 
第14章 继承 
 14.1 继承基础 
  派生类 
  派生类的构造函数 
  陷阱:使用基类的私有成员变量 
  陷阱:私有成员函数是无法被有效继承的 
  protected限定符 
  成员函数的重定义 
  重定义与重载 
  访问被重定义过的基类函数 
  不可被继承的函数 
 14.2 利用继承编程 
  派生类中的赋值运算符和拷贝构造函数 
  派生类的析构函数 
  示例:可备份的部分填充的数组 
  陷阱:赋值运算符两边是同一个对象 
  示例:PFArrayDBak的另一种实现 
  提示:一个类可以访问本类所有对象的私有成员 
  提示:“是一个”和“有一个” 
  保护继承和私有继承 
  多继承 
第15章 多态与虚函数 
 15.1 虚函数基础 
  延迟绑定 
  C++中的虚函数 
  提示:virtual属性会被继承 
  提示:什么时候应该使用虚函数 
  陷阱:没有对虚成员函数进行定义 
  抽象类与纯虚函数 
  示例:抽象类 
 15.2 指针和虚函数 
  虚函数与扩展类型兼容性 
  陷阱:切片问题 
  提示:使析构函数成为虚函数 
  向下类型转换和向上类型转换 
  C++如何实现虚函数 
第16章 模板 
 16.1 函数模板 
  函数模板语法 
  陷阱:编译器的复杂性 
  提示:如何定义模板 
  示例:一个通用的排序函数 
  陷阱:使用模板时误用了不正确的数据类型 
 16.2 类模板 
  类模板语法 
  示例:一个数组模板类 
  模板中的vector和 basic_string 
 16.3 模板和继承 
  示例: 带备份的部分填充数组模板类 
第17章 链式数据结构 
 17.1 节点和链表 
  节点 
  链表 
  在链表头插入节点 
  陷阱:丢失节点 
  插入和删除链表内的节点 
  陷阱:对动态数据结构使用赋值运算符 
  搜索链表 
  搜索函数伪代码 
  双向链表 
  为双向链表增加一个节点 
  从双向链表中删除一个节点 
  示例: 使用双向链表实现的通用排序模板函数 
 17.2 链表的应用 
  示例:栈模板类 
  示例:队列模板类 
  提示:命名空间的注解 
  友元类以及类似的其他选择 
  示例:包含节点链的哈希表 
  字符串哈希函数 
  哈希表的效率 
  示例:集合(set)模板类 
  集合的基本操作 
  链表创建的集合的效率 
 17.3 迭代器 
  指针作为迭代器 
  迭代器类 
  示例:迭代器类 
 17.4 树 
  树的属性 
  示例:树模板类 
第18章 异常处理 
 18.1 异常处理基础 
  异常处理的简单样例 
  定义自己的异常类 
  多个抛出和捕获 
  陷阱:首先捕获比较明确的异常 
  提示:异常类可以很简单 
  在函数中抛出异常 
  异常说明 
  陷阱:派生类中的异常说明 
 18.2 异常处理的编程技术 
  抛出异常的时机 
  陷阱:未被捕获的异常 
  陷阱:嵌套try-catch块 
  陷阱:过度使用异常 
  异常类层次结构 
  可用内存测试 
  再次抛出异常 
第19章 标准模板库 
 19.1 迭代器 
  迭代器基础 
  陷阱:编译器问题 
  迭代器的种类 
  常量迭代器和可变迭代器 
  反向迭代器 
  其他种类的迭代器 
 19.2 容器 
  连续容器 
  陷阱:迭代器和删除元素 
  提示:容器中的类型定义 
  容器适配器栈和队列 
  陷阱:底层容器 
  关联式容器set和map 
  效率 
 19.3 泛型算法 
  运行时间和大-O表示法 
  容器访问运行时间 
  不改变序列的算法 
  改变序列的算法 
  集合算法 
  排序算法

已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

完美C++(第5版)
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    loading icon