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

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

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

为什么静态static成员函数不能成为virtual虚函数相关推荐

  1. C++ class中的静态(static)成员

    C++ class中的静态(static)成员 (1)       静态数据成员 ①一般地静态数据成员在该类定义之外被初始化,如同一个成员函数被定义在类定义之外一样.在这种定义中的静态成员的名字必须被 ...

  2. 23.C++- 继承的多种方式、显示调用父类构造函数、父子之间的同名函数、virtual虚函数...

     上章链接: 22.C++- 继承与组合,protected访问级别 继承方式 继承方式位于定义子类的":"后面,比如: class Line : public Object // ...

  3. C++经验(四)-- 基类构造函数和析构函数中调用virtual虚函数?

    class Base {public:Base();virtual void oneFunction() = 0;... };Base::Base() {...oneFunction(); }clas ...

  4. c++ 虚函数多态、纯虚函数、虚函数表指针、虚基类表指针详解

    文章目录 静态多态.动态多态 虚函数 哪些函数类型不可以被定义成虚函数? 虚函数的访问方式 析构函数中的虚函数 虚函数表指针 vptr 多继承下的虚函数表 虚基类表指针 bptr 纯虚函数 抽象类 虚 ...

  5. c++ public 函数名相同_C++虚函数、重载、覆盖

    C++基础(五)虚函数.重载.覆盖.隐藏 虚函数总是跟多态联系在一起,引入虚函数可以使用基类指针对继承类对象进行操作!虚函数:继承接口(函数名,参数,返回值),但是实现不继承(函数体) 非虚函数:继承 ...

  6. 析构函数可以为纯虚函数吗?纯虚函数可以有函数体吗?纯虚函数需要函数体吗?

    先回答标题中中的几个问题: 析构函数可以为纯虚函数吗? yes. 纯虚函数可以有函数体吗? yes. 纯虚函数需要函数体吗? 一般来讲,如果析构函数是纯虚函数,那么析构函数必须要有函数体,如果是其它函 ...

  7. 虚函数,虚函数表,虚函数实现原理,虚函数实现机制,虚函数解决的问题

    虚函数 虚函数表 虚函数实现原理? 虚函数解决的问题?虚函数解决问题的实现机制? 虚函数模型的构建? 虚函数模型的应用?

  8. c 语言的虚函数,C 中的虚函数(virtual function)

    一.简介 虚函数是C++中用于实现多态(polymorphism)的机制.核心理念就是通过基类访问派生类定义的函数.假设我们有下面的类层次: class Father { public: virtua ...

  9. C++中virtual 虚函数的作用介绍

    1,介绍 虚函数是定义在基类中的函数,子类必须对其进覆盖.在类中声明虚函数的格式: virtual void display();  2,作用 (1)定义子类对象,并调用对象中未被子类覆盖的基类函数A ...

最新文章

  1. 宁波大红鹰学院计算机科学与技术,2019宁波大红鹰学院专业排名
  2. ae saber插件_【AE插件】 用于做动画制作/设计的五个免费插件 非常好用
  3. webpack搭建php服务器,webpack搭建react开发环境步骤详解
  4. Qt中为工程添加资源文件、给按钮添加图片
  5. Linux:入门基础
  6. 我的世界1.11服务器咋发信息,我的世界进服务器怎么注册怎么发信息
  7. centos mysql 安装及配置
  8. 优秀!26岁任985大学博导!
  9. Java 连接 数据库 (idea2022 + MySQL 演示,Oracle 通用)
  10. npm命令启动前端项目
  11. 如何查看自己的代理ip地址
  12. 属性动画cancel
  13. 跟小博老师一起学习数据库 ——索引
  14. 键盘 连击 测试软件测,87自学单片机第六十篇:按键双击和多击检测
  15. 查看邮件导致关联?亚马逊多账号管理必看
  16. 判断输入是否为电话号码
  17. Microsoft OLE DB Provider for ODBC Drivers (0x80004005) 操作必须使用一个可更新的查询”错误的解决办法
  18. 超级签名 免签封装 安卓打包 企业签名 超级签名MDM 企业签名MDM 自助分发多合一系统 搭建说明
  19. vue结合highlightjs实现代码高亮+行号
  20. poj2387- Til the Cows Come Home

热门文章

  1. python画50个图-python 实现在一张图中绘制一个小的子图方法
  2. python入门教程pdf-《python基础教程(第3版)》高清版PDF免费下载
  3. python发音模块-python 利用pyttsx3文字转语音
  4. iOS语音识别功能实现
  5. mysql报错22_运行 mysql 遇到的两个报错
  6. 【王道计组笔记】定点数编码方式(原码,补码,反码)
  7. FFmpeg源代码简单分析:libavdevice的avdevice_register_all()
  8. ITU-R BT.1788建议书 对多媒体应用中视频质量的主观评估方法
  9. 虹软java接摄像头_java基于虹软sdk实现人脸识别(demo)
  10. 笔记本电脑如何保养_笔记本电脑过热 五招教你轻松解决