C++多态

1.什么是多态?

通过父类的指针调用实际子类的成员函数,使父类的指针有多种形态。

2.多态通过什么实现的?

通过虚函数重写完成的。多态是基于虚函数,虚函数需要重写。

3.多态实现原理?

通过维护一个虚函数列表(v_table),表的每个元素都是一个函数指针,函数指针指向虚函数,或者重写的虚函数(子类重写了,把这个元素覆盖),还需要记录这个表的指针(vfptr),创建的对象是谁这个指针就指向谁的表

v_table:在编译期存在,所有对象共用这一个表。

vfptr:在创建对象的时候存在的,是父类中第一个成员,在构造函数里面初始化,指向自己类的表。

4.多态优点?

复用,扩展

5.多态缺点?

空间,效率,安全性。

6.多态什么时候用?

统一类型,多个类都包含一个共同的功能,但是实现方式不同,这个函数就要用虚函数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值