fre*_*low 4 c oop virtual-functions
可以通过this显式传递指针在C中模拟成员函数.可以通过在每个对象中显式地存储指向全局函数指针数组的指针来模拟虚函数.精细.
现在我的问题是,人们真的这样做了吗?我想知道是否值得教这种技术,因为我不想向C新生传授一些实际上从未在现实世界中使用的东西.
(我需要为已经熟悉OOP的人填写为期两周的C门课程的最后一天.)
是否有任何相关的项目,图书馆或框架以所述方式在C中模拟OO?
小智 8
我在C大学已有二十年的经验.这是我学过的第一个编译语言,我从来不需要继续前进,所以它一直是C,只有C.我在工作和家里不断编写代码.我发布了一个无锁数据结构库.我想我是一名称职的C程序员.
关于你的问题,OO包含许多概念.例如,一个是实例化,例如具有new()和delete()的库以及给定实体的实例(堆栈,列表等).C支持这一点,当然,它是一种非常实用和有用的方法.我用这种方法大约十五年了.
很多年前,我开始尝试另外的OO概念,在C++中得到很好的支持,继承.我想要一个包含其他实体的实体.那么问题是暴露所包含的entites的API.你可以做到,但事实是,C语言并不能自然地表达这样的概念和方法.这不是我现在使用的东西.
我的建议是; 刀是刀,叉是叉.您可以使用另一个,但它不能很好地工作.C自然不支持某些(重要的)OO概念,例如继承.不要试图让C做这些事情.如果要执行此操作,请使用C++.