虚函数和虚析构函数

虚函数是动态多态的实现手段。在子类继承父类,子类重写父类虚函数的前提下,当父类指针或引用指向子类时发生动态多态。
虚函数是在函数前加关键字virtual,父类的虚函数必须加关键字,子类可加可不加。
在类中,存放虚函数的指针(所以类的内存大小为4),指向虚函数表,虚函数表里存放虚函数的地址,子类继承父类时会重写虚函数表,将父类虚函数地址替换为自己的虚函数地址。如果父类的虚函数没有函数体,替换为=0;即为纯虚函数。功能和虚函数一样,不同的是此时的类被称为抽象类,不能实例化。子类继承父类的虚函数后,如果不进行重写,那么同样是抽象类,不能使用,所以强制子类进行重写。
运行多态的一个问题在于通过父类指针或引用指向子类时,在调用析构函数时只调用父类的析构函数,所以只释放父类在堆区开辟的内存,子类在堆区开辟的内存没有被释放。所以需要虚析构函数。
虚析构函数和纯析构函数:
1.解决父类指针释放子类堆区内存的问题。如果子类没有在堆区开辟内存,可以不使用虚析构函数。
2.需要具体实现
3.纯虚析构函数是抽象类,不能实例化

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值