C语言如何模拟C++实现继承和多态
来源:互联网 发布:知党史,学党史,跟党走 编辑:程序博客网 时间:2024/05/17 16:55
首先要明白c++的三大特性:封装,继承,多态
而这些C语言统统都没有,那么C语言如何实现继承和多态呢?
C++的继承属性是通过访问限定符:public,protected,private来实现.
我们知道c++的多态必须满足两个条件:虚函数的重写以及父类的指针和引用指向子类的对象.
思路:我们知道在C语言中没有类的概念,但是却有结构体struct,默认C++中struct也是类,这样我们就可以突破访问限定符的限制实现继承了,那么多态呢?其实我们可以让两个成员函数分别调用两个结构体对象,最后再一个函数指针去调成员函数.
验证:
//c++模拟实现继承和多态class CPPA{public: virtual void f()//虚函数 { cout << "CPPA" << endl; }private: int _a;};class CPPB:public CPPA{ void f() { cout << "CPPB" << endl; }private: int _b;};//定义一个函数指针//typedef void(*Func)();typedef void(*FUNC)();//C语言模拟实现继承和多态struct CA{ FUNC f; int _a;};struct CB{ CA _ca;//C语言模拟C++的公有继承 int _b;};//A对象的成员函数void FunCA(){ cout<<"CA" << endl;}//B对象的成员函数void FunCB(){ cout << "CB" << endl;}//调用C++的void func(CPPA*ptr){ ptr->f();}//调用C语言void func(CA*ptr){ ptr->f();}int main(){ //测试C++模拟实现继承和多态 CPPA cppa;//定义一个父类 CPPB cppb;//定义一个子类 func(&cppa);//指向父类调父类的成员函数 func(&cppb);//多态行为,调子类的成员函数 //测试C模拟实现继承和多态 CA ca; CB cb; ca.f = FunCA;//赋值 cb._ca.f = FunCB;//赋值 func(&ca); func((CA*)&cb);//强制类型装换 system("pause"); return 0;}
阅读全文
0 0
- C语言如何模拟C++实现继承和多态
- C语言模拟实现C++中的继承和多态
- C语言模拟实现继承和多态
- C语言模拟实现C++继承和多态
- C语言模拟实现C++中的继承和多态
- c语言模拟实现c++的继承和多态
- 模拟继承和多态--C语言模式实现C++继承和多态
- 如何实现 C 语言的继承和多态
- C语言如何实现继承和多态
- C语言实现继承和多态
- C语言实现继承和多态
- C语言实现继承和多态
- C语言实现继承和多态
- C语言实现继承和多态
- C语言实现继承和多态
- C语言实现继承和多态
- C语言实现继承和多态
- C 语言实现多态和继承
- vue的修饰符
- MySQL创建视图的语法格式
- CodeChef ROBOTDAG Robots in a DAG
- lua-2 逻辑控制和函数
- 自定义linux命令
- C语言如何模拟C++实现继承和多态
- B1006
- 《应用拆分与平台搭建最佳实践》- 拆分中的工作内容
- Json Web Token
- 证明接口中量和方法的默认访问修饰符及其信息
- leetcode485
- 树形动态规划 hdu1502 poj2342 Anniversary party
- cocos2dx学习笔记-给精灵类添加事件
- c语言实现静态顺序表