C++的虚函数

定义虚函数后,虚表地址存放于类的前4个字节,故无论多少个虚函数,只占用类的4个字节,虚表中则存放多个虚函数,类似于数组一样排列。




虚函数与多态

在编译器编译后,成员变量以及普通成员将会分配固定地址,称为前期绑定;

而虚函数则不是,它需要程序运行时,动态分配地址,称为动态绑定。

如果想通过父类指针访问子类的方法,那么便是多态,通过多重继承虚函数,其各类的虚函数保存在子类的虚表中



一些见解:

1.使用父类指针访问子类时,只能访问子类中继承父类的成员
2.如果子类的成员函数与父类相同,那么子类的函数将会覆盖继承的父类函数
3.通过继承的相同的虚函数,可以通过父类指针访问,而这些相同的虚函数则存储于虚表当中,通过一定的顺序调用继承过来的虚函数。
4.通过普通指针访问类时,则通过指针移位进行访问变量,如果类中有虚函数,那么指针的第一个指向为虚函数的虚表地址,指针的下一个才是变量值

5.子类的成员变量可以通过父类指针访问,但只能访问父类拥有的成员
6.子类的成员变量可以通过普通的指针访问,通过指针的递增访问所有变量
7.子类的成员函数能通过父类指针访问,但仅限于虚函数,通过虚表
8.子类的成员函数可以通过定义函数指针进行访问


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值