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

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

漫画 | C语言哭了,过年回家,只有我还没对象
文章图片
C语言回家过年 , 遇到不少小伙伴 。
大家都在外地打拼 , 一年难得见面 , 聚到一起吃饭 , 都非常高兴 。

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

漫画 | C语言哭了,过年回家,只有我还没对象
文章图片
听Java提到TIOBE , 正在喝酒的C语言激动起来 。
自己常年在那里排名第二 , 人类用自己写的程序可真不少!可都是处于底层 , 在系统级编程 , 什么操作系统 , 数据库 , 编译器......
这些软件与应用层的热闹光景比起来 , 显得有些落寞 。

漫画 | C语言哭了,过年回家,只有我还没对象
文章图片
Python端着酒杯来到C语言身边 。

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

漫画 | C语言哭了,过年回家,只有我还没对象
文章图片
餐桌的气氛突然有点儿尴尬 , 捅了篓子的Python赶紧招呼大家继续喝酒 。
好不容易熬到聚餐结束 , C语言郁闷地回到了冷冷清清的家中 。

漫画 | C语言哭了,过年回家,只有我还没对象
文章图片
C语言突然想起来对门的肯·汤普森 , 那是丹尼斯·里奇的“好基友” , 他们俩一起创造了伟大的Unix操作系统 , 获得了计算机界的最高奖:图灵奖 。

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

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

漫画 | C语言哭了,过年回家,只有我还没对象
文章图片
看到C语言满脸沮丧 , 肯·汤普森大为吃惊!

漫画 | C语言哭了,过年回家,只有我还没对象
文章图片
肯·汤普森立刻明白了 , C语言觉得自己不支持面向对象编程 。

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

漫画 | C语言哭了,过年回家,只有我还没对象
文章图片
看到C语言很吃惊 , 肯·汤普森决定好好给他掰扯掰扯 。
他真不愧是老司机 , 唰唰唰迅速就写成了一段代码 。

漫画 | C语言哭了,过年回家,只有我还没对象
文章图片
C语言很聪明 , 很快看懂了 。
这里定义了一个叫做Shape的结构体 , 外界只能通过相关的函数来对这个Shape进行操作 , 例如创建(Shape_create) , 移动(Shape_move),等 , 不能直接访问Shape的内部数据结构 。
虽然这里没有class这样的关键字 , 数据结构和相关操作是分开写的 , 看起来不太完美 , 但确实是实现了封装 。

漫画 | C语言哭了,过年回家,只有我还没对象
文章图片
肯·汤普森不吭声 , 继续写代码 。
大牛的风格看来都是类似的:别瞎BB , 给我上代码 。

漫画 | C语言哭了,过年回家,只有我还没对象
文章图片
这次定义了一个矩形(Rectangle)的结构体 , 其中嵌套了Shape , 难道这就实现了继承?
C有点疑惑 。

漫画 | C语言哭了,过年回家,只有我还没对象
文章图片
通过这种组合的方式 , 也算是实现了继承吧 。

漫画 | C语言哭了,过年回家,只有我还没对象
文章图片
这么轻松就实现了封装和继承 , C语言感到很兴奋 , 但是多态怎么实现呢?
这时候外边又传来了门铃声 。

漫画 | C语言哭了,过年回家,只有我还没对象
文章图片
Linus大神撇了一眼墙上的代码 , 立刻就明白了怎么回事 。

漫画 | C语言哭了,过年回家,只有我还没对象
文章图片
C和Go都是一脸茫然 。

漫画 | C语言哭了,过年回家,只有我还没对象
文章图片
C和Go都是一脸茫然 。

漫画 | C语言哭了,过年回家,只有我还没对象
文章图片
现在C有点明白了 , 无论是Rectangle对象 , 还是Square对象 , 在调用Shape_area方法的时候 , 都需要通过vptr这个指针找到虚函数表中的area方法 。
对于Rectangle , 找到的是Rectangel_area方法 , 对于Square , 找到的是Square_area方法 。
structRectangle*r=Rectangle_create(5,5,10,10);Shape_area((structShape*)r);