C语言模拟实现C++的继承多态

来源:互联网 发布:淘宝详情页价格 编辑:程序博客网 时间:2024/06/06 07:20

C++的三大特性:封装、继承、多态,这些是C语言没有的,C++用class类实现了这三个特性,而C语言只有struct结构体,那么,如何用C语言模拟实现C++的继承和多态呢?

我们先要清楚继承和多态的概念。

继承:允许派生类在基类原有特性的基础上扩展,增加派生类特有成员。

多态:通过虚函数指针指向虚表中不同类中的同名函数。

#define _CRT_SECURE_NO_WARNINGS 1#include<iostream>using  namespace std;typedef void(*Fun) ();//C语言结构体中不能包含成员函数,所以在结构体外定义函数指针struct AA{    Fun _fun;    int  _a;};struct BB{    AA  a;//定义AA结构体对象实现继承    int _b;};void funA(){    printf("funA()\n");}void funB(){    printf("funB()\n");}int main(){    AA aa;    BB bb;    aa._fun = funA;    bb.a._fun = funB;    AA *p = &aa;//定义AA的对象指针    p->_fun();    p = (AA*)&bb;//父类指针指向子类对象    p->_fun();//实现多态    system("pause");    return 0;}

这里写图片描述

原创粉丝点击