C++中虚函数
1. 虚函数、虚函数表、类
类的成员函数不占用内存空间

引入virtual后

为什么从1变成4?
当一个/多个虚函数加入类之后,编译器向类中插入一个看不见的成员变量——即虚函数表指针Vptr(4个字节)占用类对象内存空间,
虚函数表Vtbl的生成:类中存在至少一个虚函数,会在类中自动生成一个虚函数表
虚函数表指针被赋值的时机

Vptr赋值的语句
Vptr指向类Vtbl

类对象在内存中的布局


虚函数的工作原理和多态性的体现
父类中存在虚函数A,子类中也有一个同名虚函数A,当通过父类指针引用来绑定一个子类对象的时候,如果用父类指针调用这个虚函数,调用的其实是子类的虚函数————多态性

本文详细解释了C++中虚函数的工作原理,包括虚函数表指针(Vptr)的使用,虚函数表(Vtbl)的生成及作用,以及虚函数如何实现多态性。文章还探讨了类对象在内存中的布局变化,以及虚函数调用的具体过程。
766

被折叠的 条评论
为什么被折叠?



