用c语言实现继承和多态
来源:互联网 发布:淘宝客户运营平台在哪 编辑:程序博客网 时间:2024/06/05 20:35
继承和多态是C++的特性,它C语言没有这个特性。
C++的三大特性:继承,多态,封装。
继承:分为公有(public)继承,私有(private)继承,保护(protected)继承。
用struct来模拟实现,因为struct在C和C++中都能可以使用,在C中称为结构体在C++中称为类,但他们的原理是一样的,又因为struct的限定符默认是公有的,在C中没有限定符这个概念,所以用C语言只能实现成公有继承。
//实现继承//子类可以调用父类的成员函数和成员变量//因为结构体中无函数,故用函数指针来实现typedef void (*ss)();struct A{ss s;int a;};struct B{struct A _a;int b;};void f1(){printf("father de f1()...\n");}void fun1(){struct A _a;struct B _b;_b._a.a =1;_b._a.s =f1; _b.b=2;printf("child--->father:%d\n",_b._a.a);_b._a .s(); //调用fun函数}
多态:
//实现多态//多态--》子类对父类的虚函数进行重写(函数名,参数,返回值都相同,协变除外),//父类的指针/引用调用重写的虚函数时,当指向父类的对象就是父类的虚函数,//当指向子类调用的,就是子类的虚函数typedef void (*Fun)(); //定义了一个Fun类型的函数指针//因为C的结构体中不能包含函数,故用函数指针来实现struct C{Fun fun; //为Fun类型定义一个变量int a;int b;};struct D{struct C c;};void PrintfC(){printf("C is father....\n");}void PrintfD(){printf("D is child......\n");}void fun2(){struct C cc;struct D dd;struct C* c1;cc.fun =PrintfC; dd.c .fun=PrintfD;c1=&cc;c1->fun(); //调用父类虚函数c1=(struct C*)ⅆc1->fun(); //调用子类的虚函数}
阅读全文
0 0
- C语言实现继承和多态
- C语言实现继承和多态
- C语言实现继承和多态
- C语言实现继承和多态
- C语言实现继承和多态
- C语言实现继承和多态
- C语言实现继承和多态
- C语言实现继承和多态
- C 语言实现多态和继承
- c语言实现继承和多态
- c语言实现继承和多态
- C语言实现继承和多态
- 用c语言实现继承和多态
- 关于C语言中继承和多态的实现
- 关于C语言中继承和多态的实现
- C语言实现封装、继承和多态
- C语言实现封装、继承和多态
- C语言实现封装、继承和多态
- Linux程序设计--进程与信号
- EffictiveJava学习笔记--创建和销毁对象
- [Linux C语言](学习笔记)标准输入流输出流以及错误流的重定向机制(2)
- K进制下的大数 字符串取模
- JDBC之调用存储过程
- 用c语言实现继承和多态
- 自定义控件之TagGroup
- kubernetes安全测试
- Vue.js的认知
- Linux之旅
- [前端与移动开发] 【前端技术分享】Web前端性能优化的9大问题
- Python编程_Lesson001_python简介和输入输出
- 分布式系统SDK端重试策略
- A1001. A+B Format (20)