首先,我们了解一下何为单继承,何为多继承??
单继承:一个子类只有一个直接父类。
多继承:一个子类有两个或多个直接父类。
单继承中的虚函数表分析:
示例程序:
#include <iostream>
using namespace std;
typedef void(*FUNC)();
class Base
{
public:
virtual void func1()
{
cout << "Base::func1()" << endl;
}
virtual void func2()
{
cout << "Base::func2()" << endl;
}
private:
int _b;
};
class Derive :public Base
{
public:
virtual void func1()
{
cout << "Derive::func1()" << endl;
}
virtual void func3()
{
cout << "Derive::func3()" << endl;
}
virtual void func4()
{
cout << "Derive::func4()" << endl;
}
private:
int _d;
};
void PrintVfptr(int* vptr)
//打印虚函数表
{
cout << "虚函数表: " << vptr << endl;
for (int i = 0; vptr[i] != 0; ++i)
{
printf("第%d个虚函数:%p >> ", i, vptr[i]);
FUNC f = (FUNC)(vptr[i]);
f();
}
}
void Test()
{
Base b;
Derive d;
int* vptrBase = (int*)(*(int*)(&b));
int* vptrDeri = (int*)(*(int*)(&d));
PrintVfptr(vptrBase);
cout << endl;
PrintVfptr(vptrDeri);
}
int main()
{
Test();
system("pause");
return 0;
}
程序运行结果:
Base类(基类)的虚函数表: