Re: [好奇] 如何用C做出繼承概念?
※ 引述《Asker97 (市井小民)》之銘言:
四月號的程序員 有專欄在講這。
有兩個大陸人搞了個叫lw_oopc得東西
LW_OOPC是一套轻量级的面向对象C语言编程框架。它是一套C语言的宏,
总共1个.h文件( 如果需要内存泄漏和调试打印支持,需要增加1个.c文件
(lw_oopc.c,约145行)),20 个宏,约130行代码,非常的轻量级,
但却很好的支持了很多面向对象的特性,比如继承、多态,可以优美的实现
面向接口编程。
可以在sourceforge上找到
http://sourceforge.net/projects/lwoopc/
裡面的例子蠻清處的,文件也寫的頗詳細。
其說明文件中的:
"轻量级的面向对象C语言编程框架LW_OOPC介绍 "
就是刊登在程序員上的文章
剛試了下,真的還蠻好用的。
作者自己認為lw_oopc優缺點如下:
LW_OOPC的优点:
1) 轻量级
2) 广泛的适应性,能够适应各种平台,各种编译器
(能支持C的地方,基本上都能支持)
3) 帮助懂OO的Java/C++程序员写出面向对象的C程序。
4) 使用C,也能引入OO的设计思想和方法,在团队的C/C++
分歧严重时可能非常有用。
LW_OOPC的缺点:
1) 无法支持重载(C语言不支持所致)
2) 不完全的封装(无法区分私有、保护和公有)
LW_OOPC的INTERFACE/ABS_CLASS/CLASS三个宏展开后都是C语言的struct,
其成员全是公有的,宏本身并无能力提供良好地封装层次的支持,
所以,只能从编程规范和编程风格上进行引导。
3) 不支持RTTI
既然不支持RTTI,那么显然也无法支持安全的向下转型
(C++中的dynamic_cast的转型功能)
4) 不支持拷贝构造以及赋值语义
5) 转换成接口的表述有点麻烦,表达形式相比C++要囉嗦很多
6) 有学习成本,需要用户学习并习惯这套宏
個人認為他有一個極大的缺點,但這缺點對你我都不存在:
所有程式中的註解,說明文件全用中文
洋人要用鐵定苦不勘言 :D
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.158.204
→
06/25 20:02, , 1F
06/25 20:02, 1F
→
06/25 21:42, , 2F
06/25 21:42, 2F
→
06/26 03:21, , 3F
06/26 03:21, 3F
→
06/26 12:05, , 4F
06/26 12:05, 4F
→
06/26 12:24, , 5F
06/26 12:24, 5F
※ 編輯: Risingforce 來自: 58.115.129.76 (06/26 12:46)
推
06/27 17:10, , 6F
06/27 17:10, 6F
→
06/27 17:10, , 7F
06/27 17:10, 7F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
好奇
1
6