首页 > 代码库 > C实现C++的多态性,呵呵......

C实现C++的多态性,呵呵......

有以下两个C++类:

class Base {public:   Base(int a, int b) : m_a(a), m_b(b) {}   virtual void Func1();   virtual int Func2();private:   int m_a, m_b;}class Derived : public Base {public:   Derived(int a, int b, double d) : Base(a, b), m_d(d) {}   virtual int Func2();private:   double m_d;}

模拟通常C++编译器的实现机制,用C语言给出Base、Derived的定义,并实现两个类的创建代码:

typedef void** VtblPtr; struct base_t{   VtblPtr _vtbl;   int m_a;   int m_b;};struct derived_t{   VtblPtr _vtbl;   int m_a;   int m_b;   double m_d;};//new Base时base_t * pBase = malloc( sizeof(base_t) );pBase -> _vtbl[0] = & _base_t_Func1;pBase -> _vtbl[1] = & _base_t_Func2;_base_t_Base( pBase, a, b ); //new Derived时derived_t * pDerived = malloc(sizeof(derived_t) );pDerived -> _vtbl[0] = &_base_t_Func1;pDerived -> _vtbl[1] = &_derived_t_Func2;//derived_t的构造函数void _derived_t_Derived( derived_t*pDerived, int a, int d){   _base_t_Base( (base_t*)pDerived, a, b);   pDerived -> m_d = d;}

 

C实现C++的多态性,呵呵......