本书适合于有一定编程基础的中高级程序员阅读,书中鼓励用户使用纯粹的面向对象的方法来解决问题。本书首先讨论了C++对C语言过程化编程的增强功能,分析了这两种语言的异同,以方便读者的学习。然后通过丰富的工程技术领域的实际示例引导读者对面向对象的编程概念进行深入的剖析和研究。每一章都包含了许多程序示例、编程项目、实际案例分析和问题讨论,可以有效地帮助读者学习和掌握新的、有用的C++技巧。另外,本书中的所有内容都基于ANSI/ISO定义的最新的C++标准,使得本书成为一本C++程序员不可或缺的学习和参考书。\r\n 本书尤其适合作为电子、机电等相关工科专业的C++教材。
第1章 从C过渡到C++\r\n\r\n1.1 C和C++的不同之处\r\n1.1.1 C++标准和编译器\r\n1.1.2 C++注释\r\n1.1.3 头文件\r\n1.1.4 数据类型\r\n1.1.5 解析作用域和变量声明\r\n1.1.6 常量\r\n1.2 C++的输入/输出\r\n1.2.1 C++的I/O方法\r\n1.2.2 C++的格式化\r\n1.3 名称空间\r\n1.4 小结\r\n1.5 练习\r\n1.6 编程项目\r\n\r\n第2章 C++的增强功能\r\n\r\n2.1 C++原型\r\n2.2 内联函数\r\n2.2.1 使用C的宏\r\n2.2.2 使用内联函数\r\n2.3 默认参数\r\n2.4 函数重载\r\n2.5 函数模板\r\n2.6 小结\r\n2.7 练习\r\n2.8 编程项目\r\n\r\n第3章 指针、引用和动态内存分配\r\n\r\n3.1 C++指针\r\n3.1.1 指针概念简介\r\n3.1.2 C和C++指针的不同\r\n3.2 引用\r\n3.2.1 作为独立的变量的引用\r\n3.2.2 把引用传递给函数\r\n3.2.3 由函数返回引用\r\n3.3 对常量使用引用和指针\r\n3.4 动态内存分配\r\n3.4.1 静态内存分配和动态内存分配\r\n3.4.2 动态数组\r\n3.5 案例研究:彩票随机数生成器\r\n3.6 小结\r\n3.7 练习\r\n3.8 编程项目\r\n\r\n第4章 类与对象\r\n\r\n4.1 过程化编程与面向对象编程\r\n4.2 C和C++数据结构\r\n4.3 类\r\n4.3.1 访问类成员\r\n4.3.2 成员函数\r\n4.3.3 在运行时分配对象\r\n4.4 构造函数和析构函数\r\n4.4.1 构造函数\r\n4.4.2 类析构函数\r\n4.5 案例研究:数据加密\r\n4.6 小结\r\n4.7 练习\r\n4.8 编程项目\r\n\r\n第5章 类的高级议题\r\n\r\n5.1 向函数传递和从函数返回对象\r\n5.2 副本构造函数\r\n5.3 友元函数和类\r\n5.3.1 友元函数\r\n5.3.2 友元类\r\n5.4 静态成员\r\n5.4.1 静态数据成员\r\n5.4.2 静态成员函数\r\n5.5 this指针\r\n5.6 常量成员函数\r\n5.7 小结\r\n5.8 练习\r\n5.9 编程项目\r\n\r\n第6章 运算符重载\r\n\r\n6.1 运算符重载的基础\r\n6.2 运算符函数\r\n6.3 重载二元运算符\r\n6.4 重载一元运算符\r\n6.5 重载流运算符\r\n6.6 案例研究:交流电计算器\r\n6.7 小结\r\n6.8 练习\r\n6.9 编程项目\r\n\r\n第7章 继承\r\n\r\n7.1 继承的基本原理\r\n7.2 protected访问指示符\r\n7.3 构造和销毁派生类\r\n7.4 多重继承\r\n7.4.1 直接多重继承\r\n7.4.2 间接多重继承\r\n7.5 支配和重写基类\r\n7.6 小结\r\n7.7 练习\r\n7.8 编程项目\r\n\r\n第8章 合成\r\n\r\n8.1 合成与继承\r\n8.2 使用合成\r\n8.3 构造和销毁合成类\r\n8.4 组合使用继承和合成\r\n8.5 案例研究:计算机系统配置程序\r\n8.6 小结\r\n8.7 练习\r\n8.8 编程项目\r\n\r\n第9章 多态性与虚函数\r\n\r\n9.1 静态绑定与动态绑定\r\n9.2 虚函数\r\n9.3 抽象基类\r\n9.4 虚析构函数\r\n9.5 使用多态性\r\n9.6 案例研究\r\n9.7 小结\r\n9.8 练习\r\n9.9 编程项目\r\n\r\n第10章 模板\r\n\r\n10.1 类模板\r\n10.1.1 模板参数\r\n10.1.2 类模板的成员函数\r\n10.1.3 在类模板中使用友元和静态成员\r\n10.1.4 使用void指针\r\n10.2 模板与继承\r\n10.3 容器与迭代器\r\n10.3.1 顺序容器\r\n10.3.2 关联式容器\r\n10.3.3 迭代器\r\n10.4 标准模板库\r\n10.5 小结\r\n10.6 练习\r\n10.7 编程项目\r\n\r\n第11章 异常处理\r\n\r\n11.1 异常处理的基本原则\r\n11.2 使用try-throw-catch\r\n11.2.1 弹出和处理异常\r\n11.2.2 异常规范\r\n11.3 处理内存分配错误\r\n11.4 异常和类\r\n11.5 小结\r\n11.6 练习\r\n11.7 编程项目\r\n\r\n第12章 文件I/O\r\n\r\n12.1 文件I/O处理的步骤\r\n12.1.1 创建文件对象\r\n12.1.2 打开文件\r\n12.1.3 使用文件\r\n12.1.4 关闭文件\r\n12.2 顺序文件\r\n12.3 随机访问文件\r\n12.4 小结\r\n12.5 练习\r\n12.6 编程项目\r\n\r\n附录A C++关键宇和同义词\r\n附录B C++运算符\r\n附录C 标准C++库\r\n附录D 标准C++算法\r\n附录E 单数问题的答案
十余年来,C++已经成为了最流行、应用最广的编程语言之一。它被广泛地应用于工业和商业计算机应用程序开发的不同领域。C++和它的前身C已经成为工程技术的不同领域,如控制系统、通信、计算机辅助设计和嵌入式系统的主流编程语言。据估计,全球有几百万C++程序员。1998年通过的C++标准使C++的教授、学习与程序开发更为简单。
本书适合的读者
本书适用于完成了使用C语言过程化程序设计课程的工程学、工程技术学、计算机科学和计算机研究技术专业的学生。书中包括许多电子工程的实例,因此对于电子工程或电子技术专业的学生更适合。本书适用于中级水平的程序员;同时,本书也是为程序员、工程师或者任何熟悉C而又想学习C++的人准备的。对于已经有了C++编程经验的人而言,从书中也会发现C++程序设计有用的最新发展。
关于本书
C++是一种通用的程序设计语言,可支持底层程序设计, (过程)结构化程序设计、面向对象程序设计和普通程序设计。因此,C++书籍的作者们在决定使用什么方法时面临着一个困难。编写C++书籍时面临的一个常见的两难选择是:只用纯粹的面向对象的方法,还是用混合过程化编程与OOP以平衡两者的方法。在大多数的工程类学校中,学生在学习C++课程之前,已经成功地完成了C语言过程化程序设计课程。但是,大多数的C++教材却使用混合的方法,这样对于那些已经完成了C语言课程的学生而言,书中就包含了大量多余的内容,从而导致篇幅不必要的增长,妨碍学生学习新的面向对象程序设计的概念。
本书的作者向工程学学生教授C++已长达八年之久。他长久以来一直在寻找一本使用纯面向对象的方法,并包含不同工程学学科程序示例的C++图书。由于没有找到一本这样的书,于是作者决心自己写一本书来满足这些需求。本书使用纯面向对象的方法来教授C++,不包含对于已经完成了C语言课程的读者而言多余的内容。本书包括许多电学和计算机工程学科的实例。本书是基于ANSI/ISO C++标准的C++程序设计语言教程。
本书的结构
本书包括12章。介绍性章节(第1~3章)讨论了C和C++的不同,以及C++对C的过程化程序设计的增强。其余各章(第4~12章)用丰富的程序示例展示了面向对象的概念。各章按如下方式组织:
·第1章,从C过渡到C++。阐述C和C++之间的基本区别,并讨论名称空间和C++的输入/输出。
·第2章,C++函数的增强功能。就C++函数相对于C函数的优势进行解释,讨论函数功能的增强。
·第3章,指针、引用与动态内存分配。重点介绍指针和引用的使用,并且讨论C++中动态内存分配技术及其实现方式。
·第4章,类和对象。解释面向对象的关键概念和技术,介绍C++的扩展结构、类以及创建和销毁对象的机制。
·第5章,类的高级议题。解释向函数传递和从函数返回对象的过程,讨论副本构造函数、友元函数和友元类以及静态类成员、this指针和常量成员函数。
·第6章,运算符重载。讨论运算符重载的所有内容,并且演示实现运算符重载的程序实例。
·第7章,继承。阐述实现继承的一些最重要的内容,如构造和销毁派生的类对象,使用多重直接和多重间接继承,重载和支配继承的类成员。
·第8章,合成。讨论并演示一些合成的实例,以及组合合成与继承的程序示例。
·第9章,多态性和虚函数。解释静态绑定与动态绑定之间的不同,阐述在实现运行时多态性时虚函数和抽象基类的重要性。
·第10章,模板。解释类模板、容器和迭代器,介绍STL库。
·第11章,异常处理。描述和演示C++中的异常处理机制和工具。
·第12章,文件I/O。讨论C++中的文件I/O处理的步骤,并演示在处理顺序文件和随机存取文件时常用的一些C++技术。
本书特色
本文使用纯粹的面向对象的方法来教授C++程序设计的精髓,同时也讨论了C++对C的过程化程序设计的增强。本书可以用作学习工具书,也是一本有价值的参考书。它包括许多电学和计算机工程学专业的实例。另外还对使用C++的软件工程和程序设计的许多方面进行了介绍。
书中每一章都分为若干节。为使本书正文的可读性更强,代码清单、图、表和重要的程序设计技巧都使用了不同于正文的版式。程序示例添加了行号以方便读者在文中找到特定的代码行。较短的代码段则直接插入到文中而未附加行号。
本书包含许多适合教学的特色:
·在每章的起始处都列出了一些学习目标。
·强调了程序设计技巧和重点提示。
·每章中的程序示例展示了特定的程序设计概念和C++工具。
·案例研究解决各种工程学专业的典型问题。按照逻辑步骤使用伪代码和流程图来分析问题并开发程序
·对每章的关键知识点都有小结
·每章末尾都有练习题以检验对该章所述内容的理解。其中一些问题需要分析、跟踪程序段,而另外一些则需要编写、修改代码或对代码段进行错误检查。本书最后提供了单数练习题的答案。
·每章末尾的编程项目需要使用该章讨论的程序设计工具和技术宋完整地解决典型的工程学问题。
·相关网站提供了本书所有的程序示例以及案例研究的源代码文件。
补充材料
作为本书的补充,教师手册包含了程序设计项目和练习的解决方案。该手册还包含关于不同C++编译器的必需的信息。
关于作者
作者是Seneca学院技术系的教授,也是电子和计算机工程技术学院的软件工程专业的学术带头人。他在学院或大学教授计算机科学和控制系统的不同课程超过了18年。同时负责一些程序设计语言(Pascal、C、C++、Visual Basic和Java)的课程设计与开发研究。
Goran Svenk
多伦多,2002