用 C 语言实现 C++ 的 继承 和 多态
来源:互联网 发布:网络著作权侵权案件 编辑:程序博客网 时间:2024/06/10 01:33
用C++简单实现继承 && 多态(我用的是VS2013)
C++代码
#define _CRT_SECURE_NO_WARNINGS 1#include<iostream>using namespace std;//C++版template<class T>struct A{ virtual void F() { cout<<"A::F()"<<endl; } T a;};template <class T>struct B:public A<T>//B类 公有继承 A类{ virtual void F() { cout << "B::F()" << endl; } T b;};void testCPlusPlus(){ A<int> a;//创建父类的对象 B<int> b;//创建子类对象 A<int>* p;//创建父类的指针 p= &a;// 父类的指针指向父类对象 //形成的条件:1.父类与子类要形成函数的重写(虚函数的重写)2.父类的指针或引用指向父类或子类的对象 p->F();//调用的是父类的A::F() p = (A<int>*)&b;// 父类的指针指向子类对象 p->F();//调用的是子类的B::F()}int main(){ testCPlusPlus(); system("plause"); return 0;}
C++结果
C语言模拟实现C++的 继承 与 多态
C语言代码
//C语言版typedef void(*FUNC)();//定义一个函数指针void FA(){ printf("A_::F()\n");}void FB(){ printf("B_::F()\n");}struct A_{ FUNC F;//创建函数名 int a_;};struct B_{ int b_; A_ a;//在B_类创建A_类的对象相当于继承了A_类的所有成员};void testC(){ A_ a1;//创建A_类对象 B_ b1;//创建B_类对象 a1.F = FA; //(函数名就相当于一个原声指针) b1.a.F = FB; A_*p;//创建A_指针 p = &a1;//A_类指针指针指向A_类对象 p->F();//调用的是类似父类的A_::F() p=(A_*)&b1;//A_类指针指针指向B_类对象 p->F();//调用的是类似子类的B_::F()}int main(){ //testCPlusPlus(); testC(); system("pause"); return 0;}
C语言结果
总结:
C语言也可以根据他的语法规则实现C++的继承与多态。
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语言实现继承和多态
- 【Word】Word运行时提示“Word在试图打开文件时遇到错误”的解决办法
- 登录页面实现回车键登入
- 面试5之编写一个方法,实现基本的字符串压缩功能。
- 使用SPRING中的线程池ThreadPoolTaskExecutor实现并发
- Screen Space Reflections in Unity 5
- 用 C 语言实现 C++ 的 继承 和 多态
- 数组中的一些常用方法总结
- Hive-1.1.0的注意事项之transform的坑
- java中String,int,Integer,char、double类型转换
- 如何搭建量化投资研究系统?(数据篇之财务数据)
- 题目1099:后缀子串排序
- 新手报道
- linux安装(磁盘分区)
- 其他容器学习笔记