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语言:聚会上,我发现只有我没有对象!的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 文件系统服务器管理论文,Linux管理磁
- 下一篇: tengine简单安装_实操丨如何在EA