#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <set>
using namespace std;
class Base {
public:
virtual void f() { cout<< "Base::f" << endl; }
virtual void g() { cout<< "Base::g" << endl; }
virtual void h() { cout<< "Base::h" << endl; }
};
class Derive : public Base {
public:
virtual void f1() { cout << "Derive::f1" << endl; }
virtual void g1() { cout << "Derive::g1" << endl; }
virtual void h1() { cout << "Derive::h1" << endl; }
void g() { cout << "Override Derive::g" << endl; }
};
typedef void (*Fun)(void);
void showVirtual(void** head)
{
void** p = (void**)(*head);
while (*p)
{
cout << p << endl;
Fun pf = (Fun)*p;
pf();
p++;
}
}
int main(int argc, char *argv[]) {
Base b;
Derive d;
cout << "基类的虚函数表" << endl;
showVirtual((void**)&b);
cout << endl;
cout << "派生类的虚函数表" << endl;
showVirtual((void**)&d);
cout << endl;
Base ff;
showVirtual((void**)&ff);
return 0;
}
虚函数的验证 = =
最新推荐文章于 2016-01-11 18:01:58 发布