虚拟函数如何工作
最编程
2024-04-13 07:14:19
...
c++规定了虚函数的行为,但将实现方法留给了编译器作者。这里介绍虚函数的工作原理。
通常编译器处理虚函数的方法是:给每一个对象一个隐藏的成员,隐藏成员中保存了一个指向函数地址数组的指针。这种数组称为虚函数表(virtual function table, vtbl),虚函数表中存储了为类对象进程声明的虚函数地址。
调用虚函数的过程,程序查看存储在对象中的vtbl地址,然后转向相应的函数地址表,使用哪个虚函数,就使用哪个地址的函数。
使用虚函数的内存和执行速度成本:
每个对象都将增大,增大量为存储地址的空间;
每个类,编译器都创建一个虚函数地址表;
对每个函数调用,都需要执行一项额外的操作,即到表中查找地址。
摘抄《C++ Primer Plus》
上一篇: 虚拟函数、虚拟析构器、纯虚拟函数、抽象类
下一篇: C++ 虚拟函数深度经典(精)--安全
推荐阅读
-
Java 面试问题:解释 Java 中的并发工具类 ConcurrentHashMap 如何工作,并列举经典应用示例
-
mac 虚拟机软件哪个好 mac 虚拟机如何安装 Windows 苹果 Mac 电脑 热门主流虚拟机 PK Parallels Desktop 和 VM
-
腾讯大牛告诉你如何通过知识管理让工作更轻松
-
51媒体 "如何做好城市推介会和地方旅游推荐的媒体宣传工作
-
virtualbox 完全虚拟化 安装 arm 架构映像 virtualbox 如何安装虚拟机
-
谷歌商店首次出现了窃取 "虚拟货币 "的软件!如何保护您的数字货币钱包?
-
原子类如何用于 Java 函数的并发和多线程?
-
扫描翻译笔如何工作?我应该如何购买一支来准备英语四六级考试?
-
如何设置电子邮件过滤?提高工作效率的不二法门
-
如何申请个人工作电子邮件地址?如何命名我的工作电子邮件地址?