因为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 = 2;
pa->fun();
cout<<"A a = "<<pa->a<<endl;
pa = (A*)&b;
pa->a = 3;
pa->fun();
cout<<"B a = "<<pa->a<<endl;
}