在上面一篇博客中 https://www.cnblogs.com/wphl-27/p/18111083,提到了虚函数,纯虚函数
这篇博客我想继续进一步来说一下虚函数和虚函数表
在C++中,每一个含有虚函数的类,编译器都会为它啊做出一个虚函数表(通常叫做 vtable), 这个虚函数表里面的每个元素都是函数指针,每个元素(函数指针)指向一个虚函数的地址.
除此之外,编译器还会为这种含有虚函数的类,添加上一个成员变量,这个成员变量是一个指向它的虚函数表的指针(通常称为 vptr). 我们来看下面这个例子
class Class1 { public : data1; data2; memfunc(); virtual vfunc1(); virtual vfunc2(); virtual vfunc3(); };
这个Class1 ,它里面包括3个虚函数,我们来看看这个类在内存中空间
我们可以看到,它自动增加了一个成员变量 vptr, 这是一个指针,可以看到它指向的是Class1的虚函数表vtable, 这个虚函数表中有3个元素,是3个函数指针,它们分别指向Class1的三个虚函数的地址
标签:函数,指向,virtual,C++,函数指针,Class1 From: https://www.cnblogs.com/wphl-27/p/18113373