用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++的继承与多态。

用 C 语言实现 C++ 的 继承 和 多态相关推荐

  1. C语言实现封装、继承、多态

    C语言实现封装.继承.多态 文章目录 C语言实现封装.继承.多态 一. 封装 二.继承 三. 多态 一. 封装 C语言中虽然没有类,但有struct和指针.我们可以在一个struct中存入数据和函数指 ...

  2. c语言实现c++的继承和多态

    继承和多态是C++的特性,它C语言没有这个特性. C++的三大特性:继承,多态,封装. 继承:分为公有(public)继承,私有(private)继承,保护(protected)继承. 用struct ...

  3. c语言编程继承例子,C语言模拟实现C++的继承与多态示例

    一.面向过程编程与面向对象编程的区别 众所周知,C语言是一种典型的面向过程编程语言,而C++确实在它的基础上改进的一款面向对象编程语言,那么,面向过程与面向对象到底有什么样的区别呢? [从设计方法角度 ...

  4. 【Python】Python语言学习:面向对象编程,类和对象,封装、继承和多态

    这一周Python语言学习,记录如下. 01 面向对象编OOP 1.1 为什么学习和应用OOP? 1 OOP适合更加复杂的需求分析和项目开发. 2 OOP具有更强大的封装能力. 3 OOP相比于面向过 ...

  5. 【C语言】C语言实现面向对象编程之继承

    00. 目录 文章目录 00. 目录 01. 概述 02. 利用结构体包含实现继承功能 03. 利用私有指针实现继承功能 04. 总结 05. 附录 01. 概述 面向对象编程具有封装性.继承性.多态 ...

  6. c语言错误封装,C语言实现的封装,继承,多态

    提到面向对象编程,我们想到的就是封装.继承.多态,但是其实这几个特性并不是只有面向对象语言才能实现,面向过程的C语言也是可以支持实现这三个特性的,下面我们来具体看下 封装1 2 3 4// point ...

  7. Java语言程序设计(基础篇) 第十一章 继承和多态

    第十一章 继承和多态 11.1 引言 面向对象的编程允许你从已经存在的类中定义新的类,这称为继承. 11.2 父类和子类 1.继承使得你可以定义一个通用的类(既父类),之后扩充该类为一个更加特定的类( ...

  8. go语言基础(四):继承、方法

    面向对象 在讲解具体面向对象编程之前,先说一下面向过程编程.我们前面学习都是面向过程的一种编程思想,接下来可以从生活中理解面向过程: 如果我们自己来修汽车,应该有哪些步骤呢? 第一步:找工具 第二步: ...

  9. java只允许单一继承_问题:Java语言只允许单继承,指每个类只能有一个 ( )

    问题:Java语言只允许单继承,指每个类只能有一个 ( ) 更多相关问题 用List命令显示表文件中的当前记录的命令格式是________. WHERE子句的条件表达式中,可以匹配0个到多个字符的通配 ...

最新文章

  1. 怎么在Linux中telnet服务器,怎么利用Telnet连接Linux服务器
  2. python代码示例下载-Python下载网易云歌单歌曲的示例代码
  3. 深入理解volatile
  4. 学习进度条(第十五周)
  5. UITableViewCell中cell重用机制导致内容重复的方法
  6. 格式化字符串漏洞利用 五、爆破
  7. iphone使用linux命令apt-get也没有问题
  8. 标准h5的定位_不但亲民还安全 红旗H5车门/防撞梁拆解
  9. iPhone开发--NSDate操作(转)
  10. Atitit 信息安全体系 资料书籍表 1. 《信息安全原理与技术 2 1.1. 第2章 工具箱: 鉴别、 访问控制与加密 2 1.2. 第3章 程序和编程 漏洞 木马 病毒 3 1.3. We
  11. 计算机485通讯原理图,485通讯接线图.pdf
  12. 使用OpenSSL自建CA及颁发证书、吊销证书
  13. 你天天看手机,手机也在看你
  14. NOI 1818:红与黑(C++)
  15. day08 系统篇端口扫描CDN服务负载均衡WAF防火墙
  16. linux添加java环境变量
  17. oracle调优 oracle培训
  18. Hadoop实战问题记录
  19. strtok是分割字符串,查找中间最长的单元
  20. 蓝鲸平台单机部署增加一台 APPT (测试服务器)

热门文章

  1. 基于html5 css3风车乐栈在线音乐播放网站源码 大学生毕业设计源码 在线音乐网站HTML HTML5期末大作业 web课程设计网页规划与设计
  2. 使用百度EasyDL定制化图像识别(二)
  3. Android Studio 4.0 最新进展
  4. 测国外服务器速度的网站,来,测一下你国外高防服务器网站的打开速度
  5. 安卓手机迁移到ios设备(音乐,视频,联系人,短信,图片,备忘录等)
  6. WebApi跨域问题解决方案:CPRS
  7. 2021年七夕送什么礼物走心?当贝投影F3怎么样?
  8. 使用pandas对excel排序
  9. win7怎么找回回收站里删除的文件?
  10. java引入css没效果,为什么我的css文件导入不起作用?