C++Primer_3rd_中国电力_中文完美版(电子版)
第1 章和第2 章形成了一个独立完整的C++介绍和概述第一篇的目的是使我们快速地 理解C++支持的概念和语言设施以及编写和执行一个程序所需要的基础知识读完这部分 内容之后你应该对C++语言有了一些认识但是还谈不上真正理解C++ 这就够了那是 本书余下部分的目的 第1 章向我们介绍了语言的基本元素内置数据类型变量表达式语句以及函数 它将介绍一个最小的合法的C++程序简要讨论编译程序的过程介绍所谓的预处理器 preprocessor 以及对输入和输出的支持它给出了多个简单但却完整的C++程序鼓励 读者亲自编译并执行这些程序第2 章介绍了C++是如何通过类机制为基于对象和面向对 象的程序设计提供支持的同时通过数组抽象的演化过程来说明这些设计思想另外它简 要介绍了模板名字空间异常处理以及标准库为一般容器类型和泛型程序设计提供的支 持这一章的进度比较快有些读者可能会觉得难以接受如果是这样我们建议你跳过这 一章以后再回过头来看它 C++的基础是各种设施它们使用户能够通过定义新的数据类型来扩展语言本身这些 V 译序 新类型可以具有与内置类型一样的灵活性和简单性掌握这些设施的第一步是理解基本语言 本身第3 章到第6 章第二篇在这个层次上介绍了C++语言 第3 章介绍了 C++语言预定义的内置和复合数据类型以及C++标准库提供的string complex vector 类数据类型这些类型构成了所有程序的基石第4 章详细讨论了C++语言 支持的表达式比如算术关系赋值表达式语句是C++程序中最小的独立单元它是第 5 章的主题C++标准库提供的容器类型是第6 章的焦点我们不是简单地列出所有可用的 操作而是通过一个文本查询系统的实现来说明这些容器类型的设计和用法 第7 章到第12 章第三篇集中在C++为基于过程化的程序设计所提供的支持上第7 章介绍C++函数机制函数封装了一组操作它们通常形成一项单一的任务如 print() 名 字后面的括号表明它是一个函数关于程序域和变量生命期的概念以及名字空间设施的 讨论是第8 章的主题第9 章扩展了第7 章中引入的关于函数的讨论介绍了函数的重载 函数重载允许多个函数实例它们提供一个公共的操作共享一个公共的名字但是要求 不同的实现代码例如我们可以定义一组print()函数来输出不同类型的数据第10 章介 绍和说明函数模板的用法函数模板为自动生成多个函数实例可能是无限多个提供了一 种规范描述prescription 这些函数实例的类型不同但实现方式保持不变 C++支持异常处理设施异常表示的是一个没有预料到的程序行为比如所有可用的程 序内存耗尽出现异常情况的程序部分会抛出一个异常——即程序的其他部分都可以访问到 程序中的某个函数必须捕获这个异常并做一些必要的动作对于异常处理的讨论跨越了两章 第11 章用一个简单的例子介绍了异常处理的基本语法和用法该例子捕获和抛出一个类类型 class type 的异常因为在我们的程序中实际被处理的异常通常是一个面向对象类层次 结构的类对象所以关于怎样抛出和处理异常的讨论一直继续到第19 章也就是在介绍面 向对象程序设计之后 第12 章介绍标准库提供的泛型算法集合看一看它们怎样和第6 章的容器类型以及内 置数组类型互相作用这一章以一个使用泛型算法的程序设计作为开始第6 章介绍的iterator 迭代器在第12 章将进一步讨论因为它们为泛型算法与实际容器的绑定提供了粘合剂 这一章也介绍并解释了函数对象的概念函数对象使我们能够为泛型算法中用到的操作符比 如等于或小于操作符提供另一种可替换的语义关于泛型算法在附录中有详细说明并带 有用法的示例 第13 章到第16 章第四篇的焦点集中在基于对象的程序设计上——即创建独立的抽 象数据类型的那些类设施的定义和用法通过创建新的类型来描述问题域C++允许程序员 在写应用程序时可以不用关心各种乏味的簿记工作应用程序的基本类型可以只被实现一次 而多次被重用这使程序员能够将注意力集中在问题本身而不是实现细节上这些封装数 据的设施可以极大地简化应用程序的后续维护和改进工作 第13 章集中在一般的类机制上怎样定义一个类信息隐藏的概念即把类的公有 接口同私有实现分离以及怎样定义并封装一个类的对象实例这一章还有关于类域嵌 套类类作为名字空间成员的讨论 第14 章详细讨论C++为类对象的初始化析构以及赋值而提供的特殊支持为了支持 这些特殊的行为需要使用一些特殊的成员函数分别是构造函数析构函数和拷贝赋值操 作符这一章我们还将看一看按成员初始化和拷贝的主题即指一个类对象被初始化为或者 VI 译序 赋值为该类的另一个对象以及为了有效地支持按成员初始化和拷贝而提出的命名返回值 named return value 扩展 第15 章将介绍类特有的操作符重载首先给出一般的概念和设计考虑然后介绍一些 特殊的操作符如赋值下标调用以及类特有的new 和delete 操作符这一章还介绍了类 的友元它对一个类具有特殊的访问特权及其必要性然后讨论用户定义的转换包括底 层的概念和用法的扩展实例这一章还详细讨论了函数重载解析的规则并带有代码示例说 明 类模板是第16 章的主题类模板是用来创建类的规范描述其中的类包含一个或多个 参数化的类型或值例如一个vector 类可以对内含的元素类型进行参数化一个buffer 类 可以对内含的元素类型以及缓冲区的大小进行参数化更复杂的用法比如在分布式计算中 IPC 接口寻址接口同步接口等都可以被参数化这一章讨论了怎样定义类模板怎样 创建一个类模板特定类型的实例怎样定义类模板的成员成员函数静态成员和嵌套类型 以及怎样用类模板来组织我们的程序最后以一个扩展的类模板的例子作为结束 面向对象的程序设计和C++的支持机制是第17 18 19 和20 章第五篇的主题第 17 章介绍了C++对于面向对象程序设计主要要素的支持继承和动态绑定在面向对象的程 序设计中用父/子关系也称类型/子类型关系来定义有共同行为的各个类类不用 重新实现共享特性它可以继承了父类的数据和操作子类或者子类型只针对它与父类不同 的地方进行设计例如我们可以定义一个父类Employee 以及两个子类型TemporaryEmpl 和Manager 这些子类型继承了Employee 的全部行为它们只实现自己特有的行为 继承的第二个方面称为多态性是指父类型具有引用由它派生的任何子类型的能 力例如一个Employee 可以指向自己的类型也可以指向TemporaryEmpl 或者Manager 动态绑定是指在运行时刻根据多态对象的实际类型来确定应该执行哪个操作的解析能力 在C++中这是通过虚拟函数机制来处理的 第17 章介绍了面向对象程序设计的基本特性这一章说明了如何设计和实现一个Query 类层次结构用来支持第6 章实现的文本查询系统 第18 章介绍更为复杂的继承层次结构多继承和虚拟继承机制使得这样的层次结构成 为可能这一章利用多继承和虚拟继承把第16 章的模板类例子扩展成一个三层的类模板层 次结构 第19 章介绍RTTI 运行时刻类型识别设施使用RTTI 我们的程序在执行过程中可 以查询一个多态类对象的类型例如我们可以询问一个Employee 对象它是否实际指向 一个Manager 类型另外第19 章回顾了异常处理机制讨论了标准库的异常类层次机构 并说明了如何定义和处理我们自己的异常类层次结构这一章也深入讨论了在继承机制下重 载函数的解析过程 第20 章详细说明了如何使用C++的iostream 输入/输出库它通过例子说明了一般的数 据输入和输出说明了如何定义类特有的输入输出操作符实例如何辨别和设置条件状态 如何对数据进行格式化iostream 库是一个用虚拟继承和多继承实现的类层次结构 C++语言预定义的内置和复合数据类型以及C++标准库提供的string complex vector 类数据类型这些类型构成了所有程序的基石第4 章详细讨论了C++语言 支持的表达式比如算术关系赋值表达式语句是C++程序中最小的独立单元它是第 5 章的主题C++标准库提供的容器类型是第6 章的焦点我们不是简单地列出所有可用的 操作而是通过一个文本查询系统的实现来说明这些容器类型的设计和用法 第7 章到第12 章第三篇集中在C++为基于过程化的程序设计所提供的支持上第7 章介绍C++函数机制函数封装了一组操作它们通常形成一项单一的任务如 print() 名 字后面的括号表明它是一个函数关于程序域和变量生命期的概念以及名字空间设施的 讨论是第8 章的主题第9 章扩展了第7 章中引入的关于函数的讨论介绍了函数的重载 函数重载允许多个函数实例它们提供一个公共的操作共享一个公共的名字但是要求 不同的实现代码例如我们可以定义一组print()函数来输出不同类型的数据第10 章介 绍和说明函数模板的用法函数模板为自动生成多个函数实例可能是无限多个提供了一 种规范描述prescription 这些函数实例的类型不同但实现方式保持不变 C++支持异常处理设施异常表示的是一个没有预料到的程序行为比如所有可用的程 序内存耗尽出现异常情况的程序部分会抛出一个异常——即程序的其他部分都可以访问到 程序中的某个函数必须捕获这个异常并做一些必要的动作对于异常处理的讨论跨越了两章 第11 章用一个简单的例子介绍了异常处理的基本语法和用法该例子捕获和抛出一个类类型 class type 的异常因为在我们的程序中实际被处理的异常通常是一个面向对象类层次 结构的类对象所以关于怎样抛出和处理异常的讨论一直继续到第19 章也就是在介绍面 向对象程序设计之后 第12 章介绍标准库提供的泛型算法集合看一看它们怎样和第6 章的容器类型以及内 置数组类型互相作用这一章以一个使用泛型算法的程序设计作为开始第6 章介绍的iterator 迭代器在第12 章将进一步讨论因为它们为泛型算法与实际容器的绑定提供了粘合剂 这一章也介绍并解释了函数对象的概念函数对象使我们能够为泛型算法中用到的操作符比 如等于或小于操作符提供另一种可替换的语义关于泛型算法在附录中有详细说明并带 有用法的示例 第13 章到第16 章第四篇的焦点集中在基于对象的程序设计上——即创建独立的抽 象数据类型的那些类设施的定义和用法通过创建新的类型来描述问题域C++允许程序员 在写应用程序时可以不用关心各种乏味的簿记工作应用程序的基本类型可以只被实现一次 而多次被重用这使程序员能够将注意力集中在问题本身而不是实现细节上这些封装数 据的设施可以极大地简化应用程序的后续维护和改进工作 第13 章集中在一般的类机制上怎样定义一个类信息隐藏的概念即把类的公有 接口同私有实现分离以及怎样定义并封装一个类的对象实例这一章还有关于类域嵌 套类类作为名字空间成员的讨论 第14 章详细讨论C++为类对象的初始化析构以及赋值而提供的特殊支持为了支持 这些特殊的行为需要使用一些特殊的成员函数分别是构造函数析构函数和拷贝赋值操 作符这一章我们还将看一看按成员初始化和拷贝的主题即指一个类对象被初始化为或者 VI 译序 赋值为该类的另一个对象以及为了有效地支持按成员初始化和拷贝而提出的命名返回值 named return value 扩展 第15 章将介绍类特有的操作符重载首先给出一般的概念和设计考虑然后介绍一些 特殊的操作符如赋值下标调用以及类特有的new 和delete 操作符这一章还介绍了类 的友元它对一个类具有特殊的访问特权及其必要性然后讨论用户定义的转换包括底 层的概念和用法的扩展实例这一章还详细讨论了函数重载解析的规则并带有代码示例说 明 类模板是第16 章的主题类模板是用来创建类的规范描述其中的类包含一个或多个 参数化的类型或值例如一个vector 类可以对内含的元素类型进行参数化一个buffer 类 可以对内含的元素类型以及缓冲区的大小进行参数化更复杂的用法比如在分布式计算中 IPC 接口寻址接口同步接口等都可以被参数化这一章讨论了怎样定义类模板怎样 创建一个类模板特定类型的实例怎样定义类模板的成员成员函数静态成员和嵌套类型 以及怎样用类模板来组织我们的程序最后以一个扩展的类模板的例子作为结束 面向对象的程序设计和C++的支持机制是第17 18 19 和20 章第五篇的主题第 17 章介绍了C++对于面向对象程序设计主要要素的支持继承和动态绑定在面向对象的程 序设计中用父/子关系也称类型/子类型关系来定义有共同行为的各个类类不用 重新实现共享特性它可以继承了父类的数据和操作子类或者子类型只针对它与父类不同 的地方进行设计例如我们可以定义一个父类Employee 以及两个子类型TemporaryEmpl 和Manager 这些子类型继承了Employee 的全部行为它们只实现自己特有的行为 继承的第二个方面称为多态性是指父类型具有引用由它派生的任何子类型的能 力例如一个Employee 可以指向自己的类型也可以指向TemporaryEmpl 或者Manager 动态绑定是指在运行时刻根据多态对象的实际类型来确定应该执行哪个操作的解析能力 在C++中这是通过虚拟函数机制来处理的 第17 章介绍了面向对象程序设计的基本特性这一章说明了如何设计和实现一个Query 类层次结构用来支持第6 章实现的文本查询系统 第18 章介绍更为复杂的继承层次结构多继承和虚拟继承机制使得这样的层次结构成 为可能这一章利用多继承和虚拟继承把第16 章的模板类例子扩展成一个三层的类模板层 次结构 第19 章介绍RTTI 运行时刻类型识别设施使用RTTI 我们的程序在执行过程中可 以查询一个多态类对象的类型例如我们可以询问一个Employee 对象它是否实际指向 一个Manager 类型另外第19 章回顾了异常处理机制讨论了标准库的异常类层次机构 并说明了如何定义和处理我们自己的异常类层次结构这一章也深入讨论了在继承机制下重 载函数的解析过程 第20 章详细说明了如何使用C++的iostream 输入/输出库它通过例子说明了一般的数 据输入和输出说明了如何定义类特有的输入输出操作符实例如何辨别和设置条件状态 如何对数据进行格式化iostream 库是一个用虚拟继承和多继承实现的类层次结构
下载地址
用户评论