为什么静态static成员函数不能成为virtual虚函数

为什么静态static成员函数不能成为virtual虚函数

首先什么是static静态成员函数?静态成员函数不属于类中的任何一个对象和实例,属于类共有的一个函数。也就是说,它不能用this指针来访问,因为this指针指向的是每一个对象和实例。

对于virtual虚函数,它的调用恰恰使用this指针。在有虚函数的类实例中,this指针调用vptr指针,指向的是vtable(虚函数列表),通过虚函数列表找到需要调用的虚函数的地址。总体来说虚函数的调用关系是:this指针->vptr(4字节)->vtable ->virtual虚函数。

所以说,static静态函数没有this指针,也就无法找到虚函数了。所以静态成员函数不能是虚函数。他们的关键区别就是this指针。

相关推荐

如何高效掌握收银技巧与流程指南
mobilegame365

如何高效掌握收银技巧与流程指南

傻脸娜为什么叫傻脸
mobilegame365

傻脸娜为什么叫傻脸

微星B250M主板怎么样?微星B250M BAZOOKA主板评测
365bet体育在线手机版

微星B250M主板怎么样?微星B250M BAZOOKA主板评测

荷兰队阵容,名单,赛程,新闻,视频
365bet体育在线手机版

荷兰队阵容,名单,赛程,新闻,视频

'痱'字用粤语广东话点读(怎么读)
365bet体育在线手机版

'痱'字用粤语广东话点读(怎么读)

如何快速修复手机移动数据的故障
外勤365app下载安装

如何快速修复手机移动数据的故障