C语言实现C++继承和多态

来源:互联网 发布:linux 文件夹读写权限 编辑:程序博客网 时间:2024/05/01 22:16

在用C语言实现继承和多态之前我们再来回忆一下什么是继承和多态

继承:就是在已有类的基础上派生出新的类,新的类中保留已有类的数据和行为,并 扩展一些新的功能。已有的类叫做:基类或父类,新的类叫做:派生类或子类

多态:在面向对象的语言中多态就是接口的不同实现方式。同一个操作作用于不同的对象可以有不同的解释,会产生不同的结果。允许基类的指针指向派生类的对象。

typedef void(*FUN)();      //定义一个函数指针来实现对成员函数的继承struct Base {    FUN _fun;   //由于C语言中结构体不能包含函数,故只能用函数指针在外面实现    int _a;};struct Derived  {    Base _a_;     //在子类中定义一个基类的对象即可实现对父类的继承    int _b;};void _fB()       //父类的同名函数{    printf("i am father\n");}void _fD()       //子类的同名函数{    printf("i am son\n");}void Test(){    Base _a;     Derived _b;     _a._fun = _fB;        //父类的对象调用父类的同名函数    _b._a_._fun = _fD;    //子类的对象调用子类的同名函数    Base* p2 = &_a;   //定义一个父类指针指向父类的对象    p2->_fun();     //调用父类的同名函数    p2 = (Base*)&_b;  //让父类指针指向子类的对象,由于类型不匹配所以要进行强转    p2->_fun();     //调用子类的同名函数}int main(){    Test();    return 0;}