c++静态成员函数为什么不能为虚函数?
收藏 • 没有帮助 • 举报 • 作者保留权利
class A {
int fun1() { ... }
static int func2() { ... }
}
首先你要搞清楚什么是普通成员函数。成员函数是类实例相关的,不同的实例对象调用成员函数结果一般都不同。
比如,上面的fun1是成员函数,你进行调用:
A *a1 = new A;A *a2 = new A;
a1->fun1();
a2->fun1();
一般来说,a1和a2调研fun1的结果会不同。成员函数在不同的实现里面设计不同,但大致都是在参数列表中隐式传入一个this指针指代当前实例。
静态函数,它其实就是普通函数。静态函数跟类实例没有关系,用a1和a2去调用结果一致,甚至于可以用A.fun2()的方式调用。静态函数调用时不会隐式传入this指针。
简而言之,成员函数实例相关,静态函数类相关。
虚函数,是一种特殊的成员函数,用来实现运行时多态的。
所以静态函数不可能是虚函数。
至于虚函数有什么特点,什么是多态,请自行Bing之。
c++静态成员函数为什么不能为虚函数?相关推荐
- 为什么静态static成员函数不能成为virtual虚函数
首先什么是static静态成员函数?静态成员函数不属于类中的任何一个对象和实例,属于类共有的一个函数.也就是说,它不能用this指针来访问,因为this指针指向的是每一个对象和实例. 对于virtua ...
- c++ 虚函数多态、纯虚函数、虚函数表指针、虚基类表指针详解
文章目录 静态多态.动态多态 虚函数 哪些函数类型不可以被定义成虚函数? 虚函数的访问方式 析构函数中的虚函数 虚函数表指针 vptr 多继承下的虚函数表 虚基类表指针 bptr 纯虚函数 抽象类 虚 ...
- c++ public 函数名相同_C++虚函数、重载、覆盖
C++基础(五)虚函数.重载.覆盖.隐藏 虚函数总是跟多态联系在一起,引入虚函数可以使用基类指针对继承类对象进行操作!虚函数:继承接口(函数名,参数,返回值),但是实现不继承(函数体) 非虚函数:继承 ...
- 虚函数,虚函数表,虚函数实现原理,虚函数实现机制,虚函数解决的问题
虚函数 虚函数表 虚函数实现原理? 虚函数解决的问题?虚函数解决问题的实现机制? 虚函数模型的构建? 虚函数模型的应用?
- 析构函数可以为纯虚函数吗?纯虚函数可以有函数体吗?纯虚函数需要函数体吗?
先回答标题中中的几个问题: 析构函数可以为纯虚函数吗? yes. 纯虚函数可以有函数体吗? yes. 纯虚函数需要函数体吗? 一般来讲,如果析构函数是纯虚函数,那么析构函数必须要有函数体,如果是其它函 ...
- 什么函数不能声明为虚函数
1.普通函数(不能被覆盖) 2.友元函数(C++不支持友元函数继承) 3.内联函数(编译期间展开,虚函数是在运行期间绑定) 4.构造函数(没有对象不能使用构造函数,先有构造函数后有虚函数,虚函数是对对 ...
- C++ 哪些函数不能声明成虚函数
在C++,有五种函数不能被声明成虚函数,分别是:非成员函数.构造函数.静态成员函数.内联成员函数.友元函数这五种,下面分别解释为什么这五种函数不能被声明成虚函数. 1. 非成员函数 非成员函数只能被重 ...
- C++ 虚函数成员和纯虚函数
一般虚函数成员的声明语法是: virtual 函数类型 函数名(形参表); 在类的定义使用virtual关键字来限定成员函数,虚函数声明只能出现在类定义中的函数原型声明中,而不能在成员函数实现的时候出 ...
- 函数的多态性以及虚函数
包含一个及一个以上的纯虚函数的类就是抽象基类,抽象基类没有也不能必要定义对象. **#include <iostream> using namespace std; class Shape ...
最新文章
- linux标准i/o,Linux 标准I/O笔记
- C#中String与 StringBuilder 的区别
- python文本菜单程序_python3.x Day1 菜单程序练习
- SpringBoot @Configuration •@Import •@Conditional•@ImportResoure基本使用
- 对信号集操作函数的使用方法和顺序
- 通过示例休眠–第1部分(删除孤儿)
- multisim高频小信号放大器_什么是放大器及其用处_光纤传感器_传感器
- wcf编程用什么工具_四个强大的自学编程网站工具,用的人都是学习欲望很强!...
- Web服务器常用设置
- 美国人民:机器人好棒棒,花钱买一个?1000块不能再高了
- 聊聊Elasticsearch的CachedSupplier
- HDU 6155 Subsequence Count(矩阵 + DP + 线段树)题解
- 计算机软件行业代码,行业代码大全.docx
- 利用Epplus将数据导出到Excel
- [Swift]Swift中的extension
- 这竟然是全世界最好的模式(商业大佬为之咂舌)
- 新换的手机号码被人注册了微信怎么办?
- mysql可以存储拼音吗_MySQL汉字变换拼音(存储函数)
- servlet+javabean+jdbc+mysql基于MVC模式的课件管理系统,有三个表的增删改查和课件搜索、课件上传、课件下载功能, 具体功能请看界面上的导航条
- 《解忧杂货店》读书笔记
热门文章
- 徐海学院计算机专业好吗,2019中国矿业大学徐海学院专业排名
- 域控下发脚本_域环境下做到单用户登陆控制脚本
- zincrby redis python_【Redis数据结构 序】使用redis-py操作Redis数据库
- 鼠标图标怎么自定义_酷鱼魔鼠——给鼠标添加酷炫的特效
- linux安装sz rz_超级好用的文件传输命令rz与sz
- 手机python3l运行_Python3 os.lchflags() 方法
- jpa多表关联查询_Spring Boot 整合mybatis如何自定义 mapper 实现多表关联查询
- python视窗编程_[PYTHON] 核心编程笔记(19.图形用户界面编程)
- php时间戳本周,php获取今天,昨天,本周,上周,本月,上月的起止时间戳
- 计算机意外关闭原因 安全问题,win7弹出“计算机意外地重新启动或遇到错误”处理方法...