漫画 | C语言哭了,过年回家,只有我还没对象

企业动态
C语言回家过年,遇到不少小伙伴。大家都在外地打拼,一年难得见面,聚到一起吃饭,都非常高兴。

[[382666]]

C语言回家过年,遇到不少小伙伴。

大家都在外地打拼,一年难得见面,聚到一起吃饭,都非常高兴。

听Java提到TIOBE, 正在喝酒的C语言激动起来。

自己常年在那里排名第二,人类用自己写的程序可真不少!可都是处于底层,在系统级编程,什么操作系统,数据库,编译器......

这些软件与应用层的热闹光景比起来,显得有些落寞。

Python端着酒杯来到C语言身边。

餐桌的气氛突然有点儿尴尬, 捅了篓子的Python赶紧招呼大家继续喝酒。

好不容易熬到聚餐结束,C语言郁闷地回到了冷冷清清的家中。

C语言突然想起来对门的肯·汤普森,那是丹尼斯·里奇的“好基友”,他们俩一起创造了伟大的Unix操作系统,获得了计算机界的最高奖:图灵奖。

看到C语言满脸沮丧, 肯·汤普森大为吃惊!

肯·汤普森立刻明白了,C语言觉得自己不支持面向对象编程。

 

看到C语言很吃惊,肯·汤普森决定好好给他掰扯掰扯。

他真不愧是老司机,唰唰唰迅速就写成了一段代码。

C语言很聪明,很快看懂了。

这里定义了一个叫做Shape的结构体,外界只能通过相关的函数来对这个Shape进行操作,例如创建(Shape_create), 移动(Shape_move),等,不能直接访问Shape的内部数据结构。

虽然这里没有class这样的关键字,数据结构和相关操作是分开写的,看起来不太完美, 但确实是实现了封装。

肯·汤普森不吭声,继续写代码。

大牛的风格看来都是类似的:别瞎BB,给我上代码。

这次定义了一个矩形(Rectangle)的结构体,其中嵌套了Shape,难道这就实现了继承?

C有点疑惑。

通过这种组合的方式,也算是实现了继承吧。

这么轻松就实现了封装和继承,C语言感到很兴奋, 但是多态怎么实现呢?

这时候外边又传来了门铃声。

Linus大神撇了一眼墙上的代码,立刻就明白了怎么回事。

 

C和Go都是一脸茫然。

 C和Go都是一脸茫然。 

现在C有点明白了, 无论是Rectangle对象,还是Square对象,在调用Shape_area方法的时候, 都需要通过vptr这个指针找到虚函数表中的area方法。

对于Rectangle,找到的是Rectangel_area方法,对于Square,找到的是Square_area方法。

  1. struct Rectangle *r = Rectangle_create(5,5,10,10); 
  2. Shape_area((struct Shape *) r); 

【本文为51CTO专栏作者“刘欣”的原创稿件,转载请通过作者微信公众号coderising获取授权】 

戳这里,看该作者更多好文

 

责任编辑:武晓燕 来源: 51CTO专栏
相关推荐

2019-02-12 15:24:50

C语言JavaPython

2019-12-24 09:44:02

界面12306系统

2013-01-31 10:02:25

产品经理火车

2020-01-21 22:02:23

物联网IOT物联网应用

2019-02-03 10:33:56

2013-01-22 09:31:20

猎豹浏览器

2018-02-08 15:30:19

2020-09-23 16:55:43

C语言编程语言

2020-10-09 11:06:38

C语言桌面语法

2022-02-23 22:01:23

SpringAOP模式

2020-12-18 08:55:20

Python火车票代码

2022-01-28 07:58:41

WPS数据整理

2014-07-30 13:44:57

2019-12-19 09:23:45

Java多线程数据

2022-10-21 09:01:41

StudentC++类型

2015-10-10 11:43:19

数据漫画人才

2010-08-24 16:07:37

C语言

2020-03-20 08:00:32

代码程序员追求

2011-06-02 09:47:11

C语言重构

2010-08-24 16:00:43

C语言
点赞
收藏

51CTO技术栈公众号