C++虚函数的实现与多态

多态:用一个名字定义不同的函数,调用同一个名字的函数,却执行不同的操作。

如何实现绑定方法:

1. 编译时的多态性:通过重载的方法实现。

2. 运行时的多态性: 通过虚函数实现。

 

C++虚函数的存在主要是为了实现多态的机制。

多态可以理解为用父类指针指向其子类对象,然后通过父类的指针调用实际子类的成员函数。多态可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。

eg://基类:Animal;         必要的前提 

virtual void Pet::eating_doing(void)               //虚函数 
{
    std::cout << "pet can eat something and do something!" << std::endl;
}

//子类:Cat;       必要的前提

void Cat::eating_doing(void)
{
    std::cout << "Cat can eat fish and play the ball!" << std::endl;
}

 

  正式开始介绍:

Pet *cat = new Cat("cat");

cat->eating();                       

在不定义虚函数时,指针直接指向Pet,调用的是Pet的eating_doing函数,输出为:pet can eat something and do something!

而定义了虚函数后,cat的指针会转向子类Cat,调用的是Cat的eating_doing函数。输出为:Cat can eat fish and play the ball!

 

一个类函数的调用并不是在编译时刻被确定的,而是在运行时刻被确定的。由于写代码时并不能确定被调用的时基类的函数还是子类的函数,所以被称为  虚函数 。虚函数只能借助指针或引用来达到多态的效果。

虚函数是一种动态的绑定方法,动态绑定和静态绑定看这个博文:https://blog.youkuaiyun.com/iicy266/article/details/11906509

 

纯虚函数  : 是在定义的虚函数原型之后加上=0;

virtual void play(void)=0;           //是一种抽象方法,告诉编译器不用执行这条函数了,在基类中还不能为它提供一个实现

定义纯虚函数时为了实现一个接口,起到一个规范的作用,规范继承了这个类的子类必须实现这个函数。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值