C++中虚函数的实现原理

1、对于C++中的虚函数一直都是靠着死记硬背的方式在使用,今天特地查阅了一下它的实现原理。
2、虚函数:C++中为了实现多样性的一个工具。使用virtual关键字修饰的函数即为虚函数,派生类自动继承虚函数性质。使用时,用基类指针指向派生类对象,直接调用派生类的虚函数。达到 接口与实现分离的目的(多样性,相同 的方法接口,但因个体差异而采用不同的实现,传递的消息时一样的,这点不同于重载 )。
3、实现原理:如果类中有虚函数,在创建对象的时候编译器会自动给对象添加一个成员变量*vptr,该指针指向对应类的虚函数地址表vtbl。vtbl的作用是保存类中所有定义的虚函数的函数指针,其结构如下图1所示。 在基类指针指向了派生类对象时,其可以访问派生类的vptr,此时指针vptr指向的是派生类的虚函数表vbtl。该表中存储的是派生类中的定义实现的虚函数。因此,就相当于是使用基类指针直接调用派生类的成员函数了。而用户使用时,只需要使用基类的函数fun()作为接口就可以实现相同的消息不同实体有不同反应的目的了(多样性)。
C++中虚函数的实现原理
图1   vtbl结构图
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值