c++虚函数作用及底层原理
c++虚函数作用及底层原理
什么是虚函数?
多态性的作用 虚函数是指函数表现出一种多态特性的函数,也就是说在程序中可以根据所操作对象的不同而调用不同的函数。在函数实现方面,他们就是有一个虚表(Vtable)指向的函数的指针,并且只有用virtual 关键字来声明的函数才会存储在Vtable 中。
虚函数的主要作用:
1、实现多态:当定义的类含有需要多态的函数,那么就要在定义的函数前面加上virtual 关键字,使函数具有虚函数的能力,这样可以实现多态性。
2、实现动态绑定:使用虚函数,可以实现动态绑定,也就是说,当程序在运行时,可以根据所操作对象的不同而调用不同的函数。
虚函数的底层原理:
在c++中的实现原理是采用一个指针数组,也称为虚表(Vtable)实现的。虚表是一个数组,里面存放的是函数的地址。当调用虚函数时,程序会首先检查对象是否有虚表指针,如果有系统会拿到虚表指针,然后根据指针所指的虚表的索引号去虚表中到实际的函数再去调用。
因此,虚函数的实现原理需要以下几步:
1t根据继承关系初始化虚表:程序会在构造函数中初始化虚表,虚表中存放的是所有虚函数的地址;
2t程序在运行过程中,会检查对象是否有虚表指针;
3t根据指针所指的虚表的索引号去虚表中到实际的函数再去调用;
4t程序运行结束,会销毁所有的对象。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论