//C++中的继承与多态
//C++中的多态可以通过虚函数来实现
class A
{
public:
//基类函数为虚函数,必须加关键字virtul
virtual void fun()
{
cout << "A:fun()" << endl;
}
int a;
};
class B :public A
{
public:
//子类里的virtual可有可无
void fun()
{
cout << "B:fun()" << endl;
}
int b;
};
void test()
{
A a;//定义一个父类对象
B b;//定义一个子类对象
A *p1 = &a;//定义一个指向父类对象的父类指针
p1->fun();//用该指针调用父类函数
p1 = &b;//让父类指针指向子类对象
p1->fun();//用该指针调用子类对象
}
测试结果:
//C语言模拟实现C++继承与多态
typedef void(*Fun)();//定义一个函数指针
struct AA//父类
{
Fun fun;//因为C语言中结构体中不能定义函数
int a;
};
struct BB//父类
{
AA _a;
int b;
};
void fa()
{
printf("AA:fun()\n");
}
void fb()
{
printf("BB:fun()\n");
}
void test()
{
AA a;//定义一个父类对象
BB b;//定义一个子类对象
a.fun = fa;//父类对象调用父类函数
b._a.fun = fb;//子类对象调用子类函数
AA *p1 = &a;//定义一个指向父类对象的父类指针
p1->fun();//让该指针调用父类函数
p1 = (AA*)&b;//让父类指针指向子类对象
p1->fun();//让该指针指向子类函数
}
测试结果