在C++中随处可见封装,继承,多态。
多态的实现,是基于虚函数的继承,虚函数则是基于虚函数表和虚函数表指针。
用一个示例介绍虚函数表指针访问虚函数,更易于方便理解虚函数,程序中也有注释
// virtual-table.cpp
#include <iostream>
using namespace std;
class A {
public:
A() {
cout << __func__ << endl;
}
virtual void fun() {
cout << "A : " << __func__ << endl;
};
virtual void bar() {
cout << "A : " << __func__ << endl;
};
};
class B : public A {
public:
B() : A() {
cout << __func__ << endl;
}
void fun() {
cout << "B : " << __func__ << endl;
}
void bar() {
cout << "B : " << __func__ << endl;
}
};
int main (int argc, char *argv[])
{
typedef void (*pfun) (void);
int bits = sizeof(int *);
B b;
B b1;
cout << "-------- 虚函数表 -----------" << endl;
// 虚表地址存在于每个实例对象的首地址处
// 虚函数表地址是同一个地址&#