欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

c++ 形参用指针 还是对象_C语言:聚会上,我发现只有我没有对象!

发布时间:2025/3/20 c/c++ 32 豆豆
生活随笔 收集整理的这篇文章主要介绍了 c++ 形参用指针 还是对象_C语言:聚会上,我发现只有我没有对象! 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

再一次程序员聚会上,C语言遇到了不少小伙伴:Java , Python, JavaScript,Ruby......

“指针?你说的是那容易出错的指针吗?现在有谁用指针啊?”  JavaScript说道。 “不会用指针,就不是真正的程序员!”  C语言涨红了脸。 餐桌的气氛变得有些尴尬,捅了篓子的Java招呼着说:“来来来,继续喝酒。” 好不容易熬到聚餐结束,C语言回到了自己的家,家里冷冷清清,自己的“亲爹”丹尼斯·里奇(Dennis Ritchie),有史以来最伟大的程序员之一, 已经于2011年10月不幸去世。 桌子上摆着的一本《C程序设计语言》,那是丹尼斯·里奇唯一的遗著, 拿起这本书,C不由悲从心来。

多态

这时候传来了门铃声,Linus大神拎着一瓶酒进来,要找C小伙儿喝酒,

他说道:“别听Java, Python, JavaScript他们瞎BB,你也有对象,也能进行面向对象的编程!我给你举个例子。”

“这个结构体包含了两个函数指针,一个用来计算图形的面积,另外一个把这个图形画出来。我们把这个结构体叫做虚函数表。”

“这有什么用啊?”  

“在你的Shape中,添加一个指向该函数表的指针就行了。” Linus回答。 

‍‍‍‍‍‍‍ C和Go都是一脸茫然。 

 “蠢材, 你们想想啊,当你创建一个子类对象的时候,比如Rectangle, 把那个虚函数指针vptr指向另外一组函数,会怎么样?” 

两人还是不懂,Linus只好继续画图: 

‍‍‍‍‍‍

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

struct Rectangle *r = Rectangle_create(5,5,10,10);

Shape_area((struct Shape *) r);

“其实吧,你的兄弟C++的多态实现原理也是类似的!在运行时查找真正的函数去执行。”  Ken 总结到。  

 “对,这种函数指针的使用方法太常见了,在我的Linux操作系统中也会定义类似的东西” Linus接口道, 

 “只要IO设备提供这几个函数的实际定义,就可以将File结构体的函数指针指向对应的实现,那就实现了用同一套接口操作不同的IO设备。”

 C语言高兴起来:“哈哈,我就说我的指针很厉害吧,这些全是通过指针来实现的。” 

“是啊,别听Java, Python, JavaScript他们瞎BB,你也有对象,也能进行面向对象的编程!”  C语言说道:“走,喝酒去!”

作者:zl1zl2zl3原文链接:https://blog.csdn.net/zl1zl2zl3/article/details/87892880更多专题

1

勤勉于现在、成就于未来——20072线下火

热开班!!

2

热烈欢迎陇东学院信息工程学院吕院长莅临

西安华清指导工作

3

2020届本科生年薪百万,入选华为“天才少

年”!

华清远见2020高校助学计划现已正式启动!百万在线精品课程全科覆盖,免费开放立刻扫码加小编申请

扫码关注

带你逆袭

您点的每个赞,我都认真当成了喜欢

总结

以上是生活随笔为你收集整理的c++ 形参用指针 还是对象_C语言:聚会上,我发现只有我没有对象!的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。