【C++程序设计】-多态性和虚函数

1.多态性

静态联编所支持的多态性称为编译时的多态性

动态联编所支持的多态性称为运行时的多态性,由虚函数来支持

2.静态联编

对象的内存地址空间中只包含数据成员,并不存储有关成员函数的信息

3.动态联编

C++要实现动态联编,调用函数时必须使用派生类指针

使用关键值virtual声明的函数,称为函数的虚函数;例如:virtual double area(){return 0}

派生类能继承基类的虚函数表,而且只要是和基类同名(参数也相同)的成员函数,无论是否使用virtual声明,它们都自动成为虚函数

4.虚函数

一旦基类定义了虚函数,该基类的派生类中的同名函数也自动成为虚函数

虚函数只能是类中的一个成员函数,但不能是静态成员,关键字virtual用于类中该函数的声明中,如:virtual void fun();//声明虚函数

5.虚函数实现多态性的条件

关键字virtual指示C++编译器对调用虚函数进行动态联编,称为运行时的多态性

产生运行时多态性前提:

类之间的继承关系满足赋值兼容兼容规则

改写了同名虚函数

根据赋值兼容性规则适用指针(或引用)

动态联编在运行时进行的,相对与静态联编,它的运行效率比较低,可以使程序员对程序进行高度抽象

6.构造函数和析构函数调用虚函数

见课本P172页

7.纯虚函数

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

一个类可以说明多个纯虚函数,包含有纯虚函数的类称为抽象类

一个抽象只能作为基类来派生新类,不能被实例化,但可以指向抽象类对象的指针

从一个抽象类派生的类必须提供虚函数的实现代码,或者在派生类中仍将它说明为纯虚函数(这种情况下,说明纯虚函数的派生类仍是抽象类)

派生类给出了基类所有纯函数的实现,则该派生类不再是抽象类

通过同一个基类派生一系列的类,则将这些类总称为类族

抽象类至少含有一个虚函数,而且至少有一个虚函数是纯虚函数,以便将它与空虚函数区分例如:

virtualvoid area()= 0;//纯虚函数

virtualvoid area() {};//空的虚函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

女汉纸一枚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值