欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

虚拟函数如何工作

最编程 2024-04-13 07:14:19
...

c++规定了虚函数的行为,但将实现方法留给了编译器作者。这里介绍虚函数的工作原理。

通常编译器处理虚函数的方法是:给每一个对象一个隐藏的成员,隐藏成员中保存了一个指向函数地址数组的指针。这种数组称为虚函数表(virtual function table, vtbl),虚函数表中存储了为类对象进程声明的虚函数地址。

调用虚函数的过程,程序查看存储在对象中的vtbl地址,然后转向相应的函数地址表,使用哪个虚函数,就使用哪个地址的函数。

使用虚函数的内存和执行速度成本:
每个对象都将增大,增大量为存储地址的空间;
每个类,编译器都创建一个虚函数地址表;
对每个函数调用,都需要执行一项额外的操作,即到表中查找地址。

摘抄《C++ Primer Plus》