天天看點

c語言模拟實作c++的繼承和多态

因為c++的繼承和多态是面向對象的,需要用類實作,而c語言沒有類,是以就隻能選擇結構體。但是結構體中不能定義函數,是以可以使用函數指針來實作c++的成員函數。

typedef void (*FUN)();
struct A
{
    FUN fun;
    int a;
};
struct B
{
    A _a;
    int b;
};
void fA()       
{
    cout<<"A:fun()"<<endl;
}
void fB()       
{
    cout<<"B:fun()"<<endl;
}
void FunTest()
{
    A a;
    B b;
    a.fun = fA;
    b._a.fun = fB;

    A* pa = &a;
    pa->a = ;
    pa->fun();
    cout<<"A a = "<<pa->a<<endl;
    pa = (A*)&b;
    pa->a = ;
    pa->fun();
    cout<<"B a = "<<pa->a<<endl;
}
           
c語言模拟實作c++的繼承和多态

繼續閱讀