读书笔记--C++程序设计(第2版)--12多态性与虚函数(虚析构函数,纯虚函数与抽象类)

多态性与虚函数(纯虚函数与抽象类)

1. 多态性说明

(1). 多态性:向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为。

C++中的多态性表现形式:具有不同功能的函数可以用同一个函数名(同一个函数名的含义是,函数的各部分都相同,不然就会发生函数重载,而这里并不是指函数重载!),这样就可以实现用一个函数名调用不同内容的函数。

(2). 多态性有静态和动态之分:

静态多态性,就是,函数重载(即函数重载和运算符重载),程序编译时就可以确定的(公交车);函数重载处理的是同一层次上的同名函数问题(参数个数不同或者类型不同),横向重载。

动态多态性,就是,通过虚函数来实现,函数运行过程中才确定的(出租车);虚函数处理的是不同派生层次上的同名函数问题(完全相同),纵向重载。

2. 虚函数与C++多态性

虚函数主要是解决,多层派生时,对于不同层的同名函数的调用实现问题(若无虚函数,则会发生同名覆盖,因为函数各部分相同,不会发生重载,当然发生重载也并不是我们想要的结果)。

虚函数实现C++多态性的原理:当把基类的某个成员函数声明为虚函数后,允许在其派生类中对该函数重新定义,赋予它新的功能,并且可以通过指向基类的指针指向同一类簇中的不同类的对象,从而调用其中的同名函数。

3. 虚函数的操作方法

主要两点:(1). 在基类中用virtual声明成员函数为虚函数。

(2). 定义一个指向基类对象的指针变量,并使它指向同一类簇中需要调用该函数的对象;通过该指针变量来调用此虚函数,此时调用的就是指针变量指向的对象的同名函数。

(实现的核心是通过将基类指针变量指向某个派生类对象来实现的)

4. 虚析构函数的功能

保证后续的处理工作进行的更好。

注意:构造函数不能声明为虚函数(因为它不可能把函数与类对象绑定)。

5. 纯虚函数与抽象类

(1).纯虚函数

纯虚函数的作用:在基类中为其派生类保留一个函数名字,以便后面的派生类根据需要对其分别进行定义。

纯虚函数的特点:纯虚函数只有函数的名字,而不具备函数的功能,不能被调用。

纯虚函数的一般形式为

virtual  函数类型 函数名 (参数表) = 0; 

(注意:纯虚函数没有函数体;这里结尾有分号,因为这是一个声明语句)

(2). 抽象类

抽象类的功能:不是用来定义对象,而只是作为一种基本类型用作继承的类。

抽象类:凡是包含纯虚函数的都是抽象类。

由于纯虚函数的特点,所以抽象类不能具体化,即抽象类是无法建立对象的,(但是可以定义指向抽象类的指针变量),这跟它的功能是呼应的。

注意:抽象类可能会好几层。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值