• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C语言模拟实现C++的继承与多态示例

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

作者:snow_5288 字体:[增加 减小] 来源:互联网 时间:2017-05-28

snow_5288 通过本文主要向大家介绍了c语言多态,c语言实现多态,c++多态,c++多态性,c++继承与多态等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

一、面向过程编程与面向对象编程的区别

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

【从设计方法角度看】

面向过程程序设计方法采用函数(或过程)来描述对数据的操作,但又将函数与其操作的数据分离开来。

面向对象程序设计方法是将数据和对象的操作封装在一起,作为一个整体来处理。

【从维护角度看】

面向过程程序设计以过程为中心,难于维护。

面向对象程序设计以数据为中心,数据相对功能而言,有较强的稳定性,因此更易于维护。

二、继承与多态的概念

继承:是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性 和行为,并能扩展新的能力,已有类被称为父类/基类,新增加的类被称作子类/派生类。

多态:按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同现方式即为多态。同一操作作 用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。简单说就是允许基类的 指针指向子类的对象。

三、代码实现C语言模拟继承与多态

#pragma once
#include <iostream>
using namespace std;

//C++中的继承与多态
struct A
{
 virtual void fun() //C++中的多态:通过虚函数实现
 {
  cout<<"A:fun()"<<endl;
 }

 int a;
};
struct B:public A   //C++中的继承:B类公有继承A类
{
 virtual void fun() //C++中的多态:通过虚函数实现(子类的关键字virtual可加可不加)
 {
  cout<<"B:fun()"<<endl;
 }

 int b;
};

//C语言模拟C++的继承与多态

typedef void (*FUN)();  //定义一个函数指针来实现对成员函数的继承

struct _A  //父类
{
 FUN _fun; //由于C语言中结构体不能包含函数,故只能用函数指针在外面实现

 int _a;
};

struct _B   //子类
{
 _A _a_;  //在子类中定义一个基类的对象即可实现对父类的继承
 int _b;
};

void _fA()  //父类的同名函数
{
 printf("_A:_fun()\n");
}
void _fB()  //子类的同名函数
{
 printf("_B:_fun()\n");
}


void Test()
{
 //测试C++中的继承与多态
 A a; //定义一个父类对象a
 B b; //定义一个子类对象b

 A* p1 = &a; //定义一个父类指针指向父类的对象
 p1->fun(); //调用父类的同名函数
 p1 = &b;  //让父类指针指向子类的对象
 p1->fun(); //调用子类的同名函数


 //C语言模拟继承与多态的测试
 _A _a; //定义一个父类对象_a
 _B _b; //定义一个子类对象_b
 _a._fun = _fA;  //父类的对象调用父类的同名函数
 _b._a_._fun = _fB; //子类的对象调用子类的同名函数

 _A* p2 = &_a; //定义一个父类指针指向父类的对象
 p2->_fun();  //调用父类的同名函数
 p2 = (_A*)&_b; //让父类指针指向子类的对象,由于类型不匹配所以要进行强转
 p2->_fun();  //调用子类的同名函数
}

</div>

运行结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C语言模拟实现C++的继承与多态示例

相关文章

  • 2017-05-28纯C语言:折半查找源码分享
  • 2017-05-28C语言 数据结构之连续存储数组的算法
  • 2017-05-28C字符串操作函数实现方法小结
  • 2017-05-28c语言快速排序算法示例代码分享
  • 2017-05-28C语言double和float 实例分析
  • 2017-05-28浅析直接插入排序与折半插入排序
  • 2017-05-28新旧MFC版本实现CEdit透明的2种方法的实例代码
  • 2017-09-12求一个n阶方阵对角线元素之和。
  • 2017-05-28Windows窗口消息实例详解
  • 2017-05-28c++传递函数指针和bind的示例

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++之CNoTrackObject类和new delete操作符的重载实例
    • 如何在TC2.0中调用汇编程序
    • 有关C++中类类型转换操作符总结(必看篇)
    • C++结构体数组详细解析
    • linux c多线程编程实例代码
    • C++语言实现线性表之数组实例
    • sizeof()的简单介绍
    • VC小技巧汇总之对话框技巧
    • c++中inline的用法分析
    • C++获取任务栏打开程序窗口示例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有