#include <iostream> using namespace std; class A { public: virtual void fun() { cout<<"A::fun()"<<endl; } }; class B { public: virtual void fun() { cout<<"B::fun()"<<endl; } virtual void fun2() { cout<<"B::fun2()"<<endl; } }; class C:public A,B { public: virtual void fun() { cout<<"C::fun()"<<endl; } virtual void fun1() { cout<<"C::fun1()"<<endl; } }; void main() { A* a = new C(); a->fun();//多态,用基类A的指针调用派生类C的fun方法 //a->fun1();//但可以用以下方法违反C++语义 typedef void(*Fun)(void); Fun fun = NULL; fun = (Fun)*((int*)*(int*)a+1); fun(); //C中有两张虚函数表,这里调用第二张虚函数表中的fun2方法 fun = (Fun)*((int*)*((int*)a+1)+1); fun(); getchar(); }
c++多态实例
最新推荐文章于 2023-07-21 16:20:27 发布