c++面向对象基本概念复习

上传人:第*** 文档编号:54399327 上传时间:2018-09-12 格式:PPT 页数:28 大小:216KB
返回 下载 相关 举报
c++面向对象基本概念复习_第1页
第1页 / 共28页
c++面向对象基本概念复习_第2页
第2页 / 共28页
c++面向对象基本概念复习_第3页
第3页 / 共28页
c++面向对象基本概念复习_第4页
第4页 / 共28页
c++面向对象基本概念复习_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《c++面向对象基本概念复习》由会员分享,可在线阅读,更多相关《c++面向对象基本概念复习(28页珍藏版)》请在金锄头文库上搜索。

1、第4章 C+的面向对象,面向对象技术是当今软件开发的主流,很多开发人员都转向使用面向对象的语言进行编程。而C+也是面向对象程序设计语言的一种。本章将依次讲解C+中的类与对象。内容包括类与对象、类的继承与派生、类的多态性等。通过本章学习,读者能够熟练掌握面向对象的思想,并能将这种思想融入到代码中。,4.1 类与对象,客观世界中,任何一个事物都可以看成是一个对象(Object)。在C+中,对象的类型被称为类(class)。本节将具体介绍类与对象的相关概念与使用。,4.1.1 面向对象思想,面向对象的思想和面向过程的思想是相对的。面向过程的程序,详细地描述了每一时刻的数据结构及对其的操作过程。而面向

2、对象的程序,将一个个小的操作封装成对象。在以后的编写中,只需调用对象即可。面向对象的程序有三大特性:封装性、继承性与多态性。,4.1.1 面向对象思想,1封装性 所谓的封装性,有着两方面的含义:一是将基本数据和对此数据进行操作的过程和函数结合起来,形成一个对象,各个对象之间相互独立,互不干扰。二是对象将对外界公开的是一个界面,将具体的细节隐藏起来,保证了数据的安全性。 2继承性 继承性是面向对象程序设计中最重要的机制。通过继承机制,可以方便地利用一个已有的类(父类)建立一个新的类(子类)。新类不但可以继承已有类的属性和方法,还可以拥有自己特有的方法。 3多态性 所谓多态性是当不同的对象收到相同

3、的消息时产生不同的动作。多态性是面向对象程序设计的一个重要特征,其增加了程序的灵活性。,4.1.2 类的声明,类是具有相同属性和相同方法的对象的集合。类由类头(class head)和类体(class body)组成。类头由关键字class和类名组成。类体是指花括号()中的内容。类体由数据成员和成员函数组成。需要注意提,类的声明以分号结束。声明类的一般形式为:,4.1.2 类的声明,其中,关键字private、public和protected称为成员访问限定符。用这些访问限定符来声明各成员的访问属性。 private:只能在本类中访问,在类外不能访问。 public:既能在本类中访问,又能在类

4、外通过该类的对象进行访问。 protected:与private类似,不能被类外访问,但能被派生类的成员函数访问。 说明:如果在类的声明中没有使用关键字,则系统将数据成员和函数默认为是私有的。,4.1.3 成员函数的定义,在C+中,定义成员函数可以在类中定义,也可以在类外定义。 如例4-1所示,display()是在类中进行声明并且定义。而GetName()和GetAge()只是在类中有声明,并没有进行定义。这种函数的定义代码如下: 则在Student类中,函数GetName()和GetAge()的定义如下:,4.1.4 类与对象的关系,在现实生活中,每一个实体事物都可以作为一个对象。例如,一

5、部手机、一支铅笔、一本书等。但是有些对象是有着相似性的。 在C+中,将这些有着相似的对象归为一类(class)。类是对象的抽象,而对象是类的实例。在编写程序时,应该先声明一个类,再去实例化若干个同类型的对象。 在一个类中,类的属性指的是类的数据成员,类的行为指的是类的方法。,4.1.5 对象的声明和实例化,类是一个抽象的概念,因此在程序中不能直接引用。而是将其实例化成为对象后,通过这个对象来对类进行相关的操作。对象的声明有3种方法。,1先声明类类型,后定义对象,这种声明的语法代码如下: 用这种方式为Student类声明对象: 如果想要一次性为某个类声明多个对象,可以用逗号作为分隔符。,2在声明

6、类的同时声明对象,这种声明的语法代码如下: 用这种方式为Student类声明对象: 如果想要一次性为某个类声明多个对象,可以用逗号作为分隔符。,3不出现类名,直接声明对象,这种声明的语法代码如下: 如果想要一次性为某个类声明多个对象,可以用逗号作为分隔符。,用这种方式为类声明对象:,在声明对象之后,可以调用类中的方法。例如,stu1为Student类的一个对象,使用该对象对Student类中的数据成员和函数进行调用。代码如下:,4.1.6 构造函数和析构函数,下面介绍C+中两个特殊的函数:构造函数和析构函数。 1构造函数 当声明一个类的属性时,可以不对其进行初始化,因为在C+中有专门的初始化函

7、数对该属性进行初始化。这个专门用来处理对象的初始化的函数就是构造函数。 构造函数是一种特殊的函数。其作用是在完成对象的初始化的同时,将对象的属性初始化。构造函数不需要用户自己来调用它,在创建对象时,由系统自动调用。定义构造函数的语法代码如下:,4.1.6 构造函数和析构函数,构造函数的特点如下所述。 构造函数名与类名相同。 构造函数不能指定返回值类型。 构造函数可以有参数,也可以没有参数。 构造函数不能被程序显示调用,只能由系统自动调用。 每个类都必须有一个构造函数。如果在声明一个类时没有给出构造函数的定义,则系统会为该类自动添加一个默认的构造函数。该构造函数的参数列表为空,函数体也为空。类中

8、各属性的值被指定为所属类型的默认值。 构造函数可以重载(有关重载的概念,会在4.2节进行介绍)。也就是说,一个类可以有多个参数不同的构造函数。 注意:当用户为声明的类添加一个自定义的构造函数时,系统则不再为程序添加默认的构造函数。,4.1.6 构造函数和析构函数,2析构函数 当一个对象的生命周期结束时,应当去释放该对象所占用的内存空间。这时,系统会自动调用析构函数来进行一些清理工作。定义析构函数的语法代码如下: 析构函数的特点如下所述。 析构函数不允许有返回值。 析构函数不允许有参数。 一个类中有且只有一个析构函数。因此,析构函数不能重载。 对于一个对象来说,析构函数是最后一个被调用的函数。,

9、4.2 C+类的继承和派生,类的继承是指新的类从已有类中获得已有的特性,例如,数据成员、成员函数等。而从已有类产生新类的过程就称为派生。其中,已有类称为基类或父类,新的类称为派生类或子类。本节将具体绍有关继承与派生的有关知识。,4.2.1 派生类的声明,派生类可以将基类中的已有的特性继承下来,也可以添加一些自己特有的新特性。声明派生类的语法代码如下: 从上述代码中可以看出,派生类Student不仅从基类Student中继承了Student类已有的数据成员和成员函数,还新添加了一些自己的数据成员和成员函数。另外,本例中采用的是公有继承。,4.2.2 派生类的继承方式,一个类中,其成员的访问权限有

10、public、private和protected之分。而类的继承方式也有三种:公有继承、私有继承和受保护继承。,1公有继承,在声明一个派生类时,将继承方式设为public,则该种继承方式称为公有继承。使用公有继承方式派生出来的类称为公有派生类,其基类称为公有基类。 采用公有方式继承时,基类的公有成员和受保护的成员在派生类中是可以引用的,而其私有成员则不能在派生类中引用。有关公有继承中成员的访问权限如下表所示。,2私有继承,在声明一个派生类时,将继承方式设为private,则该种继承方式称为私有继承。使用私有继承方式派生出来的类称为私有派生类,其基类称为私有基类。 采用私有方式继承时,基类的公有

11、成员和受保护的成员在派生类中相当于是私有成员。而其私有成员不能在派生类中引用。有关私有继承中成员的访问权限如下表所示。,3受保护继承,在声明一个派生类时,将继承方式设为protected,则该种继承方式称为受保护继承。使用受保护继承方式派生出来的类称为受保护派生类,其基类称为受保护基类。 采用受保护方式继承时,基类的公有成员和受保护成员在派生类中相当于是受保护成员。而其私有成员不能在派生类中引用。有关受保护继承中成员的访问权限如下表所示。,4.2.2 单一继承和多重继承,在C+中,继承分为两种:单一继承和多重继承。 1单一继承 一个基类只能由一个派生类来继承,这种继承方式称为单一继承。单一继承

12、关系所形成的是一种树形结构,如下图所示。,4.2.2 单一继承和多重继承,2多重继承 一个派生类不仅只能拥有一个基类,还可以拥有多个基类,这种继承方式称为多重继承。基于多重继承方式的派生类,同时拥有了多个基类的特性。多重继承的关系如下图所示。 如果已经声明了类A、类B和类C,而类D想要同时成为A、B、C三个类的派生类,即类D是多重继承的派生类。代码如下:,4.3 C+的多态性,在面向对象的程序中,多态性是一个非常重要的概念。同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。,4.3.1 多态的分类,C+中的多态性是指同一个函数名称对应着功能类似的多个函数。这些函数执

13、行不同但是功能类似的操作,从而实现了“一个接口,多种方法”。C+中的多态性分为两种:静态多态性和动态多态性。 静态多态性是指在编译程序时,系统就能确定所调用的是哪一个函数。因此,静态多态性又称编译时多态性。静态多态性是通过函数重载和运算符重载实现的。 动态多态性是指在程序运行的过程中才能动态地确定调用哪一个函数。因此,动态多态性又称运行时多态性。动态多态性是通过继承和虚函数实现的。,4.3.2 运算符重载,所谓重载,就是对一个事物赋予新的含义。而运算符重载,就是对已有的运算符进行重新定义,赋予其另外一种功能,以适应不同的数据类型。运算符重载的语法代码如下: 在C+中,有关重载运算符的规则如下:

14、 只能对C+中已有的运算符进行重载。 并不是C+中的所有运算符都能进行重载,运算符“.”、“:” 、“?:”等不能重载。 重载运算符不能改变操作数的个数。 重载运算符不能改变运算符的优先级。 重载运算符不能改变运算符的结合性。 重载运算符不能使用默认参数。,4.3.3 虚函数,虚函数是指在派生类中定义与基类同名的函数,但基类中的该函数前有virtual修饰。声明虚函数的语法代码如下: 在C+中,当一个成员函数被声明为虚函数后,其派生类中的同名函数将自动成为虚函数。因此,在派生类中重新声明该虚函数时,virtual可以不加。但为了使程序看起来清晰,一般在派生类中也加上virtual。,4.3.4 纯虚函数,在某些特殊情况下,需要使用纯虚函数。例如,有一个动物类,其中有一个名为睡觉的函数。而各种动物的睡觉方式是不同的。此时,可以将动物类中的睡觉函数声明为纯虚函数,而该动物类则成为了抽象类。 声明纯虚函数的语法代码如下: 纯虚函数没有函数体。 语法代码后面的“0”不是代表该函数的返回值为0。此种表达方式仅仅是通知系统,这是一个纯虚函数。 有些类不用来定义对象,而只是作为一个基类去派生新的类,这种类称为抽象类。在抽象类中,可以使用纯虚函数。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 职业教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号