如何在C中模仿C++的多态技术?

cheeryanhua 2002-07-06 11:01:18
如何在C中模仿C++的多态技术?
有没有关于C的设计模式资料?
...全文
59 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanwuhuan 2002-07-08
  • 打赏
  • 举报
回复
那本书是Object-Oriented Programming with ANSI-C吧?看了一下就没看了,没多大意义,C++不是现成的吗?呵呵
alpha_wang 2002-07-08
  • 打赏
  • 举报
回复
去看Linux内核,它用了。
panther8888 2002-07-07
  • 打赏
  • 举报
回复
应该可以的,因为第一个C++编译器就是将C++编译为以代码,再用C编译器编译的。
zheng_can 2002-07-07
  • 打赏
  • 举报
回复
建议参考 深度探索C++对象模型
meinmei 2002-07-06
  • 打赏
  • 举报
回复
C如果能仿出来,那它也是面向对象的语言了。应该不可以吧!
Wargod2002 2002-07-06
  • 打赏
  • 举报
回复
这也太麻烦了吧,c连继承都没有
要多态,先得搞继承吧??
Yssss1980 2002-07-06
  • 打赏
  • 举报
回复
你可以一下COM技术
就可以用c语言实现多态
主要是使用vtable
struct A
{
struct AVtbl *p;
};
struct AVtbl
{
BOOL FunName(struct A*);
};

cheeryanhua 2002-07-06
  • 打赏
  • 举报
回复
非常感谢!!!!!!!!
cloudwu 2002-07-06
  • 打赏
  • 举报
回复
其实并不复杂, 我就见过一个 BTer, 用 C 实现了继承, 多重继承, 多态
甚至还有泛型编程, 类似 template 的东东. 和异常处理.
有 new/delete 构造/解析的机制.

程序读起来也比较清晰. 无非就是 struct , 宏, 和 #include 的应用,
不能实现的也就是退出函数自动析构等一些 C 语言本身无法作到的东西.
还有多重继承中菱形继承这些实现起来过于复杂的东西.

faint, google 上想重新 search 一下, 居然一下子找不到了
刚才找了半天终于从我的history里翻出来 :)
http://ldeniau.home.cern.ch/ldeniau/html/oopc/oopc.html

Hpt370 2002-07-06
  • 打赏
  • 举报
回复
用C语言实现多态并不复杂

最主要的技术是函数指针。

在没一个struct里面定义一个vtable

对于每一个vtable[i]定义一个常数名字

成员函数的第一个参数必须是this指针。

以后只需要设置不同的成员函数,就实现了多态
prototype 2002-07-06
  • 打赏
  • 举报
回复
it is probably not *very* hard if you know the virtual mechanism in c++. but your code will perhaps be hard to read.
refer to the following articles for more technical details:
http://cscene.org/CS1/CS1-02.html
http://www.accu.org/acornsig/public/articles/oop_c.html
huang_yi_cn 2002-07-06
  • 打赏
  • 举报
回复
楼上的同志,面向对象是大部分语言都可以做的,只是相对而言有的语言更适合而已。c当然也是可以的,只是不如c++那么好用罢了

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧