为什么静态static成员函数不能成为virtual虚函数
首先什么是static静态成员函数?静态成员函数不属于类中的任何一个对象和实例,属于类共有的一个函数。也就是说,它不能用this指针来访问,因为this指针指向的是每一个对象和实例。
对于virtual虚函数,它的调用恰恰使用this指针。在有虚函数的类实例中,this指针调用vptr指针,指向的是vtable(虚函数列表),通过虚函数列表找到需要调用的虚函数的地址。总体来说虚函数的调用关系是:this指针->vptr(4字节)->vtable ->virtual虚函数。
所以说,static静态函数没有this指针,也就无法找到虚函数了。所以静态成员函数不能是虚函数。他们的关键区别就是this指针。
为什么静态static成员函数不能成为virtual虚函数相关推荐
- C++ class中的静态(static)成员
C++ class中的静态(static)成员 (1) 静态数据成员 ①一般地静态数据成员在该类定义之外被初始化,如同一个成员函数被定义在类定义之外一样.在这种定义中的静态成员的名字必须被 ...
- 23.C++- 继承的多种方式、显示调用父类构造函数、父子之间的同名函数、virtual虚函数...
上章链接: 22.C++- 继承与组合,protected访问级别 继承方式 继承方式位于定义子类的":"后面,比如: class Line : public Object // ...
- C++经验(四)-- 基类构造函数和析构函数中调用virtual虚函数?
class Base {public:Base();virtual void oneFunction() = 0;... };Base::Base() {...oneFunction(); }clas ...
- c++ 虚函数多态、纯虚函数、虚函数表指针、虚基类表指针详解
文章目录 静态多态.动态多态 虚函数 哪些函数类型不可以被定义成虚函数? 虚函数的访问方式 析构函数中的虚函数 虚函数表指针 vptr 多继承下的虚函数表 虚基类表指针 bptr 纯虚函数 抽象类 虚 ...
- c++ public 函数名相同_C++虚函数、重载、覆盖
C++基础(五)虚函数.重载.覆盖.隐藏 虚函数总是跟多态联系在一起,引入虚函数可以使用基类指针对继承类对象进行操作!虚函数:继承接口(函数名,参数,返回值),但是实现不继承(函数体) 非虚函数:继承 ...
- 析构函数可以为纯虚函数吗?纯虚函数可以有函数体吗?纯虚函数需要函数体吗?
先回答标题中中的几个问题: 析构函数可以为纯虚函数吗? yes. 纯虚函数可以有函数体吗? yes. 纯虚函数需要函数体吗? 一般来讲,如果析构函数是纯虚函数,那么析构函数必须要有函数体,如果是其它函 ...
- 虚函数,虚函数表,虚函数实现原理,虚函数实现机制,虚函数解决的问题
虚函数 虚函数表 虚函数实现原理? 虚函数解决的问题?虚函数解决问题的实现机制? 虚函数模型的构建? 虚函数模型的应用?
- c 语言的虚函数,C 中的虚函数(virtual function)
一.简介 虚函数是C++中用于实现多态(polymorphism)的机制.核心理念就是通过基类访问派生类定义的函数.假设我们有下面的类层次: class Father { public: virtua ...
- C++中virtual 虚函数的作用介绍
1,介绍 虚函数是定义在基类中的函数,子类必须对其进覆盖.在类中声明虚函数的格式: virtual void display(); 2,作用 (1)定义子类对象,并调用对象中未被子类覆盖的基类函数A ...
最新文章
- 宁波大红鹰学院计算机科学与技术,2019宁波大红鹰学院专业排名
- ae saber插件_【AE插件】 用于做动画制作/设计的五个免费插件 非常好用
- webpack搭建php服务器,webpack搭建react开发环境步骤详解
- Qt中为工程添加资源文件、给按钮添加图片
- Linux:入门基础
- 我的世界1.11服务器咋发信息,我的世界进服务器怎么注册怎么发信息
- centos mysql 安装及配置
- 优秀!26岁任985大学博导!
- Java 连接 数据库 (idea2022 + MySQL 演示,Oracle 通用)
- npm命令启动前端项目
- 如何查看自己的代理ip地址
- 属性动画cancel
- 跟小博老师一起学习数据库 ——索引
- 键盘 连击 测试软件测,87自学单片机第六十篇:按键双击和多击检测
- 查看邮件导致关联?亚马逊多账号管理必看
- 判断输入是否为电话号码
- Microsoft OLE DB Provider for ODBC Drivers (0x80004005) 操作必须使用一个可更新的查询”错误的解决办法
- 超级签名 免签封装 安卓打包 企业签名 超级签名MDM 企业签名MDM 自助分发多合一系统 搭建说明
- vue结合highlightjs实现代码高亮+行号
- poj2387- Til the Cows Come Home
热门文章
- python画50个图-python 实现在一张图中绘制一个小的子图方法
- python入门教程pdf-《python基础教程(第3版)》高清版PDF免费下载
- python发音模块-python 利用pyttsx3文字转语音
- iOS语音识别功能实现
- mysql报错22_运行 mysql 遇到的两个报错
- 【王道计组笔记】定点数编码方式(原码,补码,反码)
- FFmpeg源代码简单分析:libavdevice的avdevice_register_all()
- ITU-R BT.1788建议书 对多媒体应用中视频质量的主观评估方法
- 虹软java接摄像头_java基于虹软sdk实现人脸识别(demo)
- 笔记本电脑如何保养_笔记本电脑过热 五招教你轻松解决