-
第一章面向对象程序设计概述
程序设计语言是与现代计算机共同诞生、共同发展的,至今已有70余年的历史,早已形 成了规模庞大的家族。进入上世纪80年代以后,随着计算机技术的发展和开发软件复杂度的逐渐增加,计算机程序设计方法和程序设计语言也不断地演变和改进。编程语言也跟着发生了很大的改变,旧有的语言不断的完善、增加了新的特性;同时,也有很多优秀的新编程语言出现。程序设计方法历经了程序设计的自然描述、结构化程序设计(面向过程的程序设计方法)、面向对象的程序设计方法、面向对象的可视化编程方法;程序设计语言历经了机器语言、汇编语言、高级语言(面向过程的高级语言)、面向对象的编程语言、面向对象的可视化编程语言。面向对象程序设计方法为目前主流的程序设计方法。适合大型的、复杂的软件设计。
-
●1.1计算机程序设计语言的发展
机器语言由二进制 0、1 代码指令构成;汇编语言指令是机器指令的符号化;高级语言需要通过编译器和解释器才能被计算机识别。
-
●1.2面向过程与面向对象
面向过程:自顶向下;面向过程:卦装、继承、多态
-
●1.3封装
类:类型;对象:实例;抽象:数据+函数;封装
-
●1.4继承
继承:类的层次
-
●1.5多态
多态:程序的灵活性
-
●1.6C++发展、特点和应用
发展:三个版本 特点:与C兼容等5点,应用广泛。
-
●1.7简单C++程序
预编译、名称空间、主函数、注释
-
第二章C++语言基础
C++是继承于C语言的,它几乎保留了C语言的全部特征,C语言的核心知识在C++语言中都适用,C语言原有的数据类型、表达式、程序语句、函数及程序组织方式等在C++程序中仍然可用。C++对C语言的最大改变就是在C语言中引入了面向对象程序设计的语言机制,并对C语言的某些特征进行了扩展,同时增加了一些非面向对象方面的新特性,使程序设计更为简洁、安全。
本章主要介绍C++在C语言基础上的扩充,这里主要讲解C++的数据类型使用;C++数据的标准输入输;表示“真”与“假”的bool类型;const常量;指针和引用;名称空间;字符串变量等相关概念。 -
●2.1C++语言基础
C++字符集、标识符
-
●2.2C++中数据的表示方法
字符集、标识符;不同类型的数据,程序中的表示形式、内存中的存储方式和支持的运算都是不同的。
-
●2.3C++中数据的表示-变量
程序中表示数据的第一种形式。必须“先定义变量,后使用变量”
-
●2.4C++中数据的表示-常量
程序中表示数据的第二种形式。
-
●2.5C++运算符与表达式
数据处理的最简单操作是进行运算,任何表达式都可以求值。
-
●2.6C++语句与控制结构概述
C++程序中可以有6类语句
-
●2.7C++中的输入输出
cin、cout
-
●2.8C++选择结构
if语句、switch语句
-
●2.9C++循环结构
do-while语句、for语句、while语句
-
●2.10字符串变量
string类型
-
●2.11C++中的动态内存管理
单一变量的分配与回收、数组的分配与回收
-
第三章函数
C++也语言是函数式的语言,函数是程序的基本单位,是C++程序设计的基础。函数即可以简化程序的结构,也可以节省编写相同程序代码的时间,达到程序模块化的目的。本章我们先简要介绍C++语言中用户函数的定义、调用和声明的方法、函数的嵌套调用等基本识知。重点讲解C++对函数的扩展内容,包括带默认值函数、内联函数和重载函数,名称空间和变量的作用域与存储类别。
-
●3.1模块化及其函数实现
模块化、函数定义、函数调用、函数声明
-
●3.2常指针及使用
指针、常指针、函数参数传递
-
●3.3引用及函数间引用传递
引用、引用传递
-
●3.4内联函数
内联函数
-
●3.5带默认形参值的函数
默认形参
-
●3.6函数重载
函数重载
-
●3.7变量的作用域
存储类别、作用域、同名变量区分
-
●3.8变量的生存期
自动变量、局部静态变量、全局变量、外部全局变量
-
●3.9命名空间
命名空间
-
第四章类与对象
类是一种自定义数据类型,是面向对象程序设计的核心,是对某一类对象的抽象,类中的大多数数据只能用本类的方法进行处理,面向对象程序设计(OOP)方法首先要设计类。对象是类实例,只有定义了对象,系统才会为其分配存储空间。类与对象的关系是抽象与具体的对应关系。类通过外部接口与外界发生关系,避免被外部函数意外改变,对象与对象之间通过信息进行通信。这样就保证了数据的独立性与安全性。
本章主要介绍类和对象的定义,类成员的访问控制属性;构造函数、拷贝构造函数和析构函数的定义和使用;对象数组和对象指针的定义和使用方法;对象、对象指针、对象引用作为函数参数和返回值的传递方式;组合类的定义和应用等。
除此之外,本章还会讲到,类与对象的吉他其他特性。由于C++是适合于编写大型复杂的程序的语言,因此,数据的共享和保护机制是C++的重要特征之一,我们将对类的静态成员的定义和使用,实现类成员数据的共享机制,友元函数、友元类的定义和使用,常对象常成员和引用的定义和使用等内容进行讨论。 -
●4.1类和对象的定义
类与抽象数据类型、类的声明和定义、类的成员函数的实现、对象的创建与使用
-
●4.2构造函数(一)
构造函数定义、默认构造函数、自定义无参构造函数、带参构造函数;默认参数值的构造函数、重载构造函数、成员对象的构造函数。
-
●4.3构造函数(二)
类的构造函数
-
●4.4拷贝构造函数
声明形式、使用拷贝的构造函数3种情况
-
●4.5析构函数
析构函数的声明、析构函数的特点、构造函数和析构函数的调用顺序
-
●4.6构造析构函数调用顺序举例
构造函数、析构函数调用顺序举例
-
●4.7对象指针和this指针
对象指针、对象数组、this指针
-
●4.8常成员
const修饰符、. 常数据成员、常函数成员
-
●4.9静态数据成员
静态数据成员、. 静态函数成员
-
●4.10友元
友元函数、友元类
-
第五章继承与派生
在第4章中介绍了类和对象的概念和应用。类可以把数据和操作封装在一个类体中,一个对象成为一个独立的实体。对象是类的一个实例。如果将对象比作房子,那么类就是房子的设计图纸。所以面向对象设计的重点是类的设计,而不是对象的设计。对于C++程序而言,设计孤立的类是比较容易的,难的是正确设计基类及其派生类。
继承是面向对象程序设计中最重要的机制。面向对象程序设计的继承机制提供了无限重复利用程序资源的一种途径。通过C++语言中的继承机制,可以扩充和完善旧的程序设计以适应新的需求,这样不仅可以节省程序开发的时间和资源,并且为未来程序设计增添了新的资源。
继承机制为描述客观世界的层次关系提供了直观、自然和方便的描述手段,定义的新类可以直接继承类库中定义的或其他人定义的高质量的类,而新的类又可以成为其他类设计的基础,这样软件重用就变得更加方便、自然。
本章围绕派生过程,着重讨论了不同继承方式下的基类成员的访问控制问题和构造函数、析构函数调用顺序问题;接着还讨论了多继承下的二义性问题以及使用虚基类解决二义性的方法。 -
●5.1继承与派生
继承与派生的概念、继承的种类、派生类的声明
-
●5.2派生类的访问控制
public继承、private继承、protected继承
-
●5.3派生类的构造函数与析构函数
派生的构造函数、派生类的析构函数、构造和析构的调用次序
-
●5.4多继承
多继承的概念、多继承中的二义性、二义性的解决方法
-
●5.5虚基类概念
虚基类的概念、虚基类的构造与析构、赋值兼容性规则
-
●5.6虚基类的构造与析构
虚基类的构造函数;虚基类的析构函数
-
●5.7赋值兼容规则
赋值兼容规则
-
第六章多态与虚函数
现实生活中,经常出现这种情况:面对同样的消息,不同的人,产生不同的反应。面向对象语言是解决现实世界问题的,也需要对这种实际情况进行处理。在面向对象语言中使用多态性实现同一个消息不同接收者采取不同的响应方式。也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息是指对类的成员函数的调用,不同的行为是指不同的实现,也就是调用了不同的函数。在C++程序设计中,在不同的类中定义了其响应消息的方法,那么使用这些类时,不必考虑它们是什么类型,只要发布消息即可。
在本章中主要介绍虚函数实现和动态联编、运算符重载。 -
●6.1多态性的概念
多态的概念;多态的种类;联编的概念;动态联编和静态联编
-
●6.2运算符重载的概念
运算符重载的概念,运算符重载的规则
-
●6.3运算符重载的方法
运算符重载为类的成员函数;运算符重载为类的友元函数
-
●6.4重载单目运算符
重载前置单目运算符;重载后置单目运算符
-
●6.5重载流插入运算符和流提取运算符
重载流插入运算符;重载流提取运算符
-
●6.6重载下标运算符[]
重载下标运算符
-
●6.7重载赋值运算符=
指针悬挂问题;重载赋值运算符
-
●6.8虚函数的定义与使用
虚函数的概念;动态多态性;虚函数的定义方法;虚函数的作用; 使用虚函数实现动态多态的条件;虚函数失效的情况
-
●6.9虚函数机理
虚函数实现动态多态的机理;虚函数表
-
●6.10虚析构函数
虚析构函数;虚析构函数的作用
-
●6.11纯虚函数和抽象类
纯虚函数;抽象类;用抽象类设计公共接口
-
第七章模板
模板是C++语言进行通用程序设计的工具之一。代码重用是程序设计的重要特性,为实现代码重用,使代码具有更好的通用性,需要使用代码不受数据类型的限制,自动适应不同的数据类型,实现参数的化程序设计。由于有大量标准数据结构用于容纳数据,人们自然就想到了为这些数据结构提供标准的、可移植的标准模板库STL。该库包含了许多在计算机科学领域里常用的基本数据结构和基本算法,为编写程序提供了可扩展的应用框架。
本章我们重点介绍函数模板和类模板的相关知识,对于模板库STL,我们介绍了主要的组件,包括迭代器、容器、函数对象和算法的基本应用。因篇幅所限,不涉及STL的方方面面。 -
●7.1函数模板的定义和实例化
函数模板的概念;函数模板的定义方法;函数模板的实例化
-
●7.2函数模板举例
函数模板举例
-
●7.3类模板的定义和使用
类模板的定义方法;类模板的实例化;类模板的使用
-
●7.4类模板的参数
类模板的非类型参数;类模板的默认参数
-
●7.5类模板与派生
类模板的派生的四种情况
-
●7.6类模板与友元
普通函数作为类模板的友元;函数模板作为类模板的友元; 类模板作为类模板的友元
-
●7.7类模板与静态成员
类的静态成员;类模板的静态成员
-
●7.8标准模板库STL概述
标准模板库STL中的四种组件
-
●7.9顺序容器之vector和deque
顺序容器的简介,vector、deque容器的基本操作。
-
●7.10顺序容器之list
list的基本操作
-
第八章输入输出流
在C++语言中没有定义专门的输入(input)/输出(output)(I/O)操作,但这些操作包含在C++的实现中,由标准库提供了C++的输入输出I/O函数和流库,这些标准I/O函数继承于C语言并作了扩充,以支持对文件和窗口等对象的高效读写(IO)。标准库所定义的IO类型定义了如何读写内置数据类型,还可以让程序员使用IO标准库设计自定义对象。在C++中,I/O操作是用“流”来处理的。
本章不讨论标准库管理中函数的实现机制,主要介绍I/O流的基础知识、格式化输出控制以及文件的输入输出的基本操作。 -
●8.1流概念和类层次结构
C++提供了一个I/O流类库来实现输入输出操作,本节介绍I/O流的概念和流类库的层次结构。
-
●8.2使用cout进行输出
本节介绍使用cout结合<
-
●8.3使用cin进行输入
本节介绍使用cin对象结合 >>提取运算符、get函数、getline函数和read函数实现标准输入。
-
●8.4格式化标准输入输出
有时候需要按特定的格式进行输入输出,本节介绍如何使用流成员函数和格式控制符进行 标准输入输出
-
●8.5文件输入输出
本节介绍文件流对象以及使用文件流对象进行文件读写操作的方法。
-
●8.6文件模式和二进制文件的读写操作
文件模式及二进制文件的读写操作
-
第九章异常处理
在设计各种软件系统时,处理程序中的错误和其它异常行为是最重要和最困难的部分之一。在设计良好的系统中,异常是程序错误处理的一部分,当程序代码检查到无法处理的问题时,需要程序将控制权转移到可以处理该问题的程序中,以进行处理。这在大型程序开发中尤其重要,使用异常处理,程序中独立开发的各部分能够就程序执行期间出现的问题相互协调,一部分程序无法解决的问题可以将问题传递给其它部分进行解决。
-
●9.1异常的概念及实现
C++异常机制提供程序中错误检测与错误处理部分之间的通信,并可以通过异常接口声明给出函数可能抛出的异常类型。
-
●9.2构造函数、析构函数与异常处理及异常匹配
使用异常机制是处理构造函数错误的安全有效的方法,但不要在析构函数中使用。异常对象的捕获和处理均由try - catch 结构实现的。