本书适合于有一定编程基础的中高级程序员阅读,书中鼓励用户使用纯粹的面向对象的方法来解决问题。本书首先讨论了C++对C语言过程化编程的增强功能,分析了这两种语言的异同,以方便读者的学习。然后通过丰富的工程技术领域的实际示例引导读者对面向对象的编程概念进行深入的剖析和研究。每一章都包含了许多程序示例、编程项目、实际案例分析和问题讨论,可以有效地帮助读者学习和掌握新的、有用的C++技巧。另外,本书中的所有内容都基于ANSI/ISO定义的最新的C++标准,使得本书成为一本C++程序员不可或缺的学习和参考书。
本书尤其适合作为电子、机电等相关工科专业的C++教材。
1 MOVING FROM C TO C++
1.1 DIFFERENCES BETWEEN C AND C++
1.1.1 THE C++ STANDARD AND COMPILERS
1.1.2 C++ COMMENTS
1.1.3 HEADER FILES
1.1.4 DATA TYPES
1.1.5 RESOLVING SCOPE AND VARIABLE DECLARATIONS
1.1.6 CONSTANTS
1.2 C++ INPUT/OUTPUT
1.2.1 C++ I/O METHODS
1.2.2 C++ FORMATTING
1.3 NAMESPACES
2 C++ FUNCTION ENHANCEMENTS
2.1 C++ PROTOTYPING
2.2 INLINE FUNCTIONS
2.2.1 USING C MACROS
2.2.2 USING INLINE FUNCTIONS
2.3 DEFAULT ARGUMENTS
2.4 FUNCTION OVERLOADING
2.5 FUNCTION TEMPLATES
3 POINTERS, REFERENCES, AND DYNAMIC MEMOPY ALLOCATION
3.1 C++ POINTERS
3.1.1 REVIEWING THE FUNDAMENTALS OF POINTERS
3.1.2 DIFFERENCES BETWEEN C AND C++ POINTERS
3.2 REFERENCES
3.2.1 REFERENCES AS INDEPENDENT VARIABLES
3.2.2 PASSING REFERENCES TO FUNCTIONS
3.2.3 RETURNING REFERENCES BY FUNCTIONS
3.3 USING REFERENCES AND POINTERS WITH CONSTANTS
3.4 DYNAMIC MEMORY ALLOCATION
3.4.1 STATIC VERSUS DYNAMIC MEMORY ALLOCATION
3.4.2 DYNAMIC ARRAYS
3.5 CASE STUDY: LOTTERY RANDOM NUMBER GENERATOR
4 CLASSES AND OBJECTS
4.1 PROCEDURAL VERSUS OBJECT-ORIENTED PROGRAMMING
4.2 C++ STRUCTURES VERSUS C STRUCTURES
4.3 CLASSES
4.3.1 ACCESSING CLASS MEMBERS
4.3.2 MEMBER FUNCTIONS
4.3.3 ALLOCATING OBJECTS AT RUN-TIME
4.4 CONSTRUCTOR AND DESTRUCTOR FUNCTIONS
4.4.1 CONSTRUCTORS
4.4.2 THE CLASS DESTRUCTOR
4.5 CASE STUDY: DATA ENCRYPTION
5 CLASSES: ADVANCED TOPICS
5.1 PASSING TO AND RETURNING OBJECTS FROM FUNCTIONS
5.2 COPY CONSTRUCTOR
5.3 FRIEND FUNCTIONS AND CLASSES
5.3.1 FRIEND FUNCTIONS
5.3.2 FRIEND CLASSES
5.4 STATIC MEMBERS
5.4.1 STATIC DATA MEMBERS
5.4.2 STATIC MEMBER FUNCTIONS
5.5 THE this POINTER
5.6 CONSTANT MEMBER FUNCTIONS
6 OPERATOR OVERLOADING
6.1 FUNDAMENTALS OF OPERATOR OVERLOADING
6.2 OPERATOR FUNCTIONS
6.3 OVERLOADING BINARY OPERATORS
6.4 OVERLOADING UNARY OPERATORS
6.5 OVERLOADING THE STREAM OPERATORS
6.6 CASE STUDY: AC CURRENT CALCULATOR
7 INHERITANCE
7.1 FUNDAMENTALS OF INHERITANCE
7.2 THE protected ACCESS SPECIFIER
7.3 CONSTRUCTING AND DESTROYING DERIVED CLASSES
7.4 MULTIPLE INHERITANCE
7.4.1 DIRECT MULTIPLE INHERITANCE
7.4.2 INDIRECT MULTIPLE INHERITANCE
7.5 DOMINATING AND OVERRIDING BASECLASS MEMBERS
8 COMPOSITION
8.1 COMPOSITION VERSUS INHERITANCE
8.2 USING COMPOSITION
8.3 CONSTRUCTING AND DESTROYING COMPOSED CLASSES
8.4 COMBINING INHERITANCE AND COMPOSITION
8.5 CASE STUDY: COMPUTER SYSTEM CONFIGURATOR
9 POLYMORPHISM AND VIRTUAL FUNCTIONS
9.1 DYNAMIC VERSUS STATIC BINDING
9.2 VIRTUAL FUNCTIONS
9.3 ABSTRACT BASE CLASSES
9.4 VIRTUAL DESTRUCTORS
9.5 USING POLYMORPHISM
9.6 CASE STUDY: LOGIC CIRCUIT CALCULATOR
10 TEMPLATES
10.1 CLASS TEMPLATES
10.1.1 Template Parameters
10.1.2 Member Functions of Class Templates
10.1.3 Using Friends and Static Members with Class Templates
10.1.4 Using the void Pointer
10.2 TEMPLATES AND INHERITANCE
10.3 CONTAINERS AND ITERATORS
10.3.1 Sequence Containers
10.3.2 Associative Containers
10.3.3 Iterators
10.4 STANDARD TEMPLATE LIBRARY (STL)
11 EXCEPTION HANDLING
11.1 FUNDAMENTALS OF EXCEPTION HANDLING
11.2 USING try-throw-catch
11.2.1 Throwing and Handling an Exception
11.2.2 Exception Specifications
11.3 HANDLING MEMORY ALLOCATION ERRORS
11.4 EXCEPTIONS AND CLASSES
12 FILE I/O
12.1 STEPS IN FILE I/O PROCESSING
12.1.1 Creating a File Object
12.1.2 Opening a File
12.1.3 Using a File
12.1.4 Closing a File
12.2 SEQUENTIAL FILES
12.3 RANDOM-ACCESS FILES
APPENDIX A C++ KEYWORDS AND SYNONYMS
APPENDIX B C++ OPERATORS
APPENDIX C STANDARD C++ LIBRARY
APPENDIX D STANDARD C++ ALGORITHMS
APPENDIX E ANSWERS TO ODD-NUMBERED QUESTIONS
十余年来, 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)的课程设计与开发研究.
本书源代码可以从以下网站下载:www.tupwq.net