范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

C语言对象编程第三弹多态

  多态的概念及C++例子
  关于多态,之前整理的什么是面向对象?这篇文章有说到:
  多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。比如关于多态的C++的例子(该C++代码来自菜鸟教程):#include   using namespace std;  // 基类   class Shape  {    protected:       int width, height;    public:       Shape( int a=0, int b=0)       {          width = a;          height = b;       }       virtual int area()       {          cout << "Parent class area" <area();      // 存储三角形的地址    shape = &tri;    // 调用三角形的求面积函数 area    shape->area();        return 0; }
  编译、运行结果为:
  代码中用到了一个关键字:virtual,这是C++的关键字。基类中用virtual关键字修饰的函数叫做虚函数。这虚函数有点像弱定义的感觉,先定义一个弱的/虚的函数,其它地方再定义同名的真的函数,实际用的是真的函数。
  该例中,在派生类中重新定义基类中定义的虚函数area时,会告诉编译器不要静态链接到该函数,而是根据所调用的对象类型来选择调用真正的函数。
  假如这个例子中不使用virtual来修饰基类中的area函数,则上例输出结果则为:
  显然,如果没有virtual来修饰的话,用到的都是基类中的area。
  本篇笔记我们还需要知道一个知识:虚函数表。具体介绍如(图片来自百度百科):
  本篇笔记关于C++相关知识的就不再拓展,感兴趣的朋友可自行查资料进行学习。下面来看看C语言中怎么来实现上诉的例子:C语言多态实例分析
  这一节我们用C语言来实现上述例子的功能。下面看具体实现:1、虚函数表
  首先,我们可以使用函数指针来模拟C++的虚函数表:/* 模拟C++的虚函数表 */ typedef struct _Ops {     int (*area)(void); }Ops;2、基类Shape:/* 基类 */   typedef struct _Shape  {     Ops ops;     int width;     int height; }Shape;3、派生类Rectangle、Triangle/* 派生类Rectangle */ typedef struct _Rectangle {     Shape shape;     char rectangle_name[20]; }Rectangle; ​ /* 派生类Triangle */ typedef struct _Triangle {     Shape shape;     char triangle_name[20]; }Triangle;4、两个派生类对应的area函数/* Rectangle的area函数 */ int rectangle_area(void) {     printf("Rectangle class area "); } ​ /* Triangle的area函数 */ int triangle_area(void) {     printf("Triangle class area "); }5、主函数/测试函数/* 主函数 */ int main(void) {     Rectangle rectangle;     memset(&rectangle, 0, sizeof(Rectangle));     rectangle.shape.ops.area = rectangle_area; /* 与自己的area函数做绑定 */ ​     Triangle triangle;     memset(&triangle, 0, sizeof(Triangle));     triangle.shape.ops.area = triangle_area; /* 与自己的area函数做绑定 */ ​     Shape *shape; ​     shape = (Shape*)&rectangle;     shape->ops.area(); ​     shape = (Shape*)▵     shape->ops.area();          return 0; }
  编译、运行结果为:
  与C++例子中得到的结果是一样的。即父类指针shape来操作两个子类时,使用相同的接口时调用了不同的函数:
  以上实现了简单的多态的功能。
  这个例子中我们的操作函数(虚函数)只有一个,即area函数。假如有多个操作函数,我们可以再建个结构体变量(函数表)把这些函数再包一层,这样会更清晰些。在这个例子中,有如下对应关系:
  因为这里只有一个操作函数,所以就没有建立一个函数表来包装一层了。我们可以再加一个函数表,如:
  有多个函数的话,就更有必要构建一个函数表了:
  这种方式是不是很熟悉了?如在通俗易懂,嵌入式Linux驱动基础就是这样的套路:
  Linux内核给我们提供一个文件操作的结构体模板,我们需要用到什么依次实现、依次填充函数表,这样就很清晰。
  除此之外,这里的给结构体初始化的方式使用如下这种方式:
  可能有些朋友没用过这种初始化结构体的方式。这里就顺便提一下,这时使用指定初始化器(designated initializer)的方式。

DML操作表数据插入数据更改数据删除数据大家好啊,我是大田。MySQL的重点DML来了,SQL中的DML用于对表中的数据进行增删改操作。操作有插入数据更改数据删除数据。一插入数据语法格式insertinto表名(字段名1唯品会不为人知的一面大牌比白牌便宜的秘密在实惠面前,人人都会心动不已。许多售价昂贵的大牌,到了唯品会却成了平民价格,有些大牌的价格,甚至还要比一些白牌产品更实惠,这是不少人亲眼见证过的事。为此专门请教了一个电商行业的朋友便携解码耳放新形态真HiFi发烧级音质的HIFIMANHM800体验通勤或各种户外场景下,你是会选择手机还是播放器作为音源?相信绝大多数的用户应该都会选择手机吧?毕竟很多时候,播放器或传统耳放随身携带基本就是个累赘。相对来说,人手一台的手机不管是在钛媒体独家自动驾驶公司云骥智行获数亿元天使轮融资,壁仞科技张文任董事长(图片来源unsplash)自动驾驶赛道再添一员。2月25日消息,钛媒体从多个信源处独家获悉,国产GPU(图形处理器)芯片公司壁仞科技的创始人张文,日前以董事长身份,领导成立了一家现在还有哪些单反值得入手?目前市场上热销的五款单反综合评价最近这两年,随着微单各方面性能的全面突破,购买单反的人已经越来越少了,因为单反最大的毛病就是体积大,机身重,镜头也重,外出携带不太方便。当然了,比起微单来,同价位的单反也有自身的一半月谈求职何必唯大厂,小而美未尝不是更务实选择来源半月谈微信公众号大批量裁员大规模降薪提前退休剔除非核心业务2021年,不少互联网大厂的大动作不断,曾经制造无数神话的大厂们似乎风光不再,让求职的年轻人和准备跳槽的打工人困惑纠结理性发布涉国际热点事件信息,拒绝不当蹭热玩梗的公告近日,国际局势变化引发社会各界广泛关注,俄乌局势牵动人心。西瓜视频站内个别用户借机发布涉国际热点事件的不良信息,以此蹭热玩梗。发布诸如乌克兰解救美女收留乌克兰美女等恶搞调侃内容,传舒服!一个注解,搞定SpringBoot操作日志Springboot注解操作日志此组件解决的问题是谁在什么时间对什么做了什么事本组件目前针对Springboot做了Autoconfig,如果是SpringMVC,也可自己在xml扩大智慧办公新版图,华为面向全球发布七款终端新品MWC2022钛媒体App2月27日消息,在2022年MWC大会(世界移动通信大会)开展前夕,华为消费者业务举办线上智慧办公春季发布会,面向全球发布七款终端新品包括已在国内发布的新一代旗舰笔记本下滑的业绩,巨额的分红,华为的处境究竟如何?2022年2月27日,华为智慧办公春季发布会将于当晚9点30分正式举行。然而对于这次发布会,人们既不关心华为办公产品的详细情况,也不关心它在智能领域的科技水平。因为所有人都只想知道美国又无理打压中企,这一次连腾讯阿里也被一锅端中国这些年的发展让很多国家都看在眼里,尤其是美国,认为自己的霸权地位不稳,将中国当作自己最大的威胁。其在众多中国内政上胡言乱语,同时呼吁自己的盟友试图对中国进行合围。在这个博弈的过
9。28成都米乐影音携MillerampampampKreisel亮相2021未来全宅巡回论坛(成都站)9月28日,2021未来全宅巡回论坛参展商米乐影音亮相2021未来全宅论坛(成都站)。9月28日,2021未来全宅巡回论坛(成都站)将于成都总府皇冠假日酒店盛大举行。继3月26日49。28成都SoundUnited中国亮相2021未来全宅巡回论坛(成都站)9月28日,2021未来全宅巡回论坛参展商SoundUnited中国亮相2021未来全宅论坛(成都站)。9月28日,2021未来全宅巡回论坛(成都站)将于成都总府皇冠假日酒店盛大举9月28日,2021未来全宅巡回论坛(成都站)与你相约皇冠假日酒店2021未来全宅巡回论坛(成都站)将于9月28日在成都总府皇冠假日酒店盛大举行。继3月26日4月23日成功举办杭州站武汉站全宅论坛及7月5日在2021CIT中国全宅影音集成展上举办当抽象艺术碰上CharioGhibli会产生什么样的火花?视频加载中绘画和音乐都是反映人类现实生活情感的艺术。可以说,抽象艺术是无声的乐,面对一件抽象绘画,看到线条色块的交融与律动,似乎能感觉到有音乐在心底响起。而且在昌老师看来,抽象艺术丹麦尊宝时尚系列(JamoLifestyle)隆重上市2021年9月,尊宝Jamo发布全新时尚系列,标志着这家丹麦音响老牌劲旅高调进入时尚数码类产品领域。以纯正的丹麦声和经典的北欧设计享誉全球的丹麦尊宝,一直以来秉承四大核心声学技术,无惧337调查,FIBBR积极应诉最终获胜2021年8月18日,ITC(UnitedStatesInternationalTradeCommission美国国际贸易委员会)对长芯盛智连科技有限公司及旗下品牌FIBBR涉及的来吧,体验沉浸式智能影音零售新概念空间有限,想象无限。平层公寓和客厅的智能影音市场方兴未艾,其中与家居设计视听享受系统集成智能操控等相关的产品和系统层出不穷,但能将它们完美结合且落到实处的解决方案却少之又少。而对于重庆美旗影音杨文勇审时度势,智能影音融合转型难得在入秋时节,再次来到山城。印象当中每一次来重庆总是烟雨朦胧,而这一次则是一反常态的阳光明媚,让我突然有些不适应。经过一轮路途上的辗转,我来到了重庆美旗贸易有限公司位于渝北区新南ProficientAudioFDS15有源超低音音箱能量强悍就是最大的优势回想起来,我已经有好一段时间没有写关于超低音音箱的评论文章了。这款ProficientAudioFDS15是我今年第一款测评的超低音音箱。ProficientAudio对两声道发烧鉴赏EliekAcoustic(美国EA)T215IW不受限,纵享震撼低频上期,我们以HT系列为媒介,向各位介绍了EliekAcoustic(以下简称EA)的品牌故事和产品设计理念。为了试听HT系列的实际效果,还特地用了三只HT82PIW和两只HT81IElacDebut2。0系列从两声道HiFi系统到全景声系统1926年,音响品牌Elac在德国基尔成立,至今已拥有95年的音响设计和生产经验。在近百年的经营里,Elac的音响技术持续往前推进,产品系列和类型的丰富也令音响爱好者能以负担得起的