社区
C语言 帖子详情 纯C模拟构造函数与析构函数 Loaden 2009-04-18 05:03:29 我们知道,C语言可以使用struct来模拟class,网上也有不少这方面的资料。
可我的问题是:如何利用struct来模拟构造函数与析构函数呢?
我现在有了一定的想法,并且准备实现它(虽然有缺陷)。
在我实现之前,想请教大家的思路!
请大家不吝指教,本人感谢在先!
先给50分,凡给出有价值的思路或实现,一律得分。
如回答踊跃,再往上加分。
另,“帮顶”“Up”之类的就免了吧。
希望通过大家的努力,找到一种最理想的解决方案!
...全文
3255 97 打赏 收藏 纯C模拟构造函数与析构函数 我们知道,C语言可以使用struct来模拟class,网上也有不少这方面的资料。 可我的问题是:如何利用struct来模拟构造函数与析构函数呢? 我现在有了一定的想法,并且准备实现它(虽然有缺陷)。 在我实现之前,想请教大家的思路! 请大家不吝指教,本人感谢在先! 先给50分,凡给出有价值的思路或实现,一律得分。 如回答踊跃,再往上加分。 另,“帮顶”“Up”之类的就免了吧。 希望通过大家的努力,找到一种最理想的解决方案! 复制链接
扫一扫 分享 转发到动态 举报 AI 作业
写回复 配置赞助广告取 消
确 定
用AI写文章 97 条回复 切换为时间正序 请发表友善的回复… 发表回复 打赏红包 需支付: 0.00 元 取 消 确 定 「已注销」 2011-01-19 打赏举报 回复 开源,目前最不满意的就是对父类中的方法的访问。
没有优雅的好办法!! 「已注销」 2011-01-19 打赏举报 回复 工作需要,重新设计,思路和fx397993401提到的基本相同。
http://topic.csdn.net/u/20110118/11/592a89e0-1cb7-4ce3-b07b-c1607093ee7a.html kylewangkylewang 2010-07-13 打赏举报 回复 C和C++各有其特色,既然要用纯的C或C++,肯定有其缺陷和不足,不需要互相模仿... gz_qmc 2010-05-26 打赏举报 回复 我的看法,从malloc出发,类的构件涵数和析构涵数都是在分配类存最开使和最结束。
只要改写malloc和free判断分配的类型就可以触发相应的代码
别忘了,类是要在创建实例时才执行初始话的。 xiangjai 2010-04-17 打赏举报 回复 强人,支持一下 aLosePig 2010-04-16 打赏举报 回复 既然要模拟C++,就先反编译了解C++的对象模型。
其在内存中是如何布局的。可参考lisp(<
写的<<深入剖析C++对象模型>>
对于虚拟表,就用函数指针模拟。
对于自动调用构造函数,暂想不出什么好办法。 ujfj1986 2009-12-04 打赏举报 回复 mark moye111 2009-07-25 打赏举报 回复 [Quote=引用 12 楼 morris88 的回复:]
意义何在?
[/Quote]
意义重大! majlor 2009-06-28 打赏举报 回复 mark
xbsf_137 2009-06-27 打赏举报 回复 学习! 印第安爸爸 2009-06-27 打赏举报 回复 mark lingdushanke 2009-06-27 打赏举报 回复 [Quote=引用 7 楼 mabo321 的回复:]
引用 6 楼 BobYy69 的回复:
纯C是不允许在struct中写函数的,在C++中里倒是可以
纯C定义对象是: struct Student obj;
C++中 可以这样: Student obj;
[/Quote]
可以用typedef定义新类型使c使用起来与c++更为接近
typedef struce Student
{
char name[10];
int age;
} volcanol 2009-06-27 打赏举报 回复 我是菜鸟 ,我说一句。 其实什么语言都可以实现面向对象, 如果各位有能力编写一个支持面向对象的编译器的话,那么就是很少人知道的易语言(中文)也可以实现C或C++的功能, 语言不是关键。 我的观点一直是 编译器才是语言的核心。有什么样的编译器就会有相应的语言或说编程思想。就像有不一样样的OS就会有不一样的文件系统一样。 volcanol 2009-06-27 打赏举报 回复 mark jianzhibeihang 2009-06-26 打赏举报 回复 mark
qq0084 2009-06-26 打赏举报 回复 学习
is__ing 2009-05-10 打赏举报 回复 这个思路牛啊 「已注销」 2009-04-29 打赏举报 回复 很遗憾,最近玩魔方玩疯了,所以没精力研究。
先结帖吧。
以后写出来了,再帖上来。
不过基本思路:只能走堆里new和delete,其实有点没意思了。
缺陷太明显。
所以下一步考虑如果用好C++里的C,从而提高效率! Paradin 2009-04-26 打赏举报 回复 学得不错。 「已注销」 2009-04-26 打赏举报 回复 [Quote=引用 73 楼 icansaymyabc 的回复:]
nbsp;
[/Quote]
没明白啥意思。
最近忙着研究魔方,所以没时间把大家的思路综合起来。
而且有点犹豫是否选择MinGW编译器。 加载更多回复(73) 计算机二级C语言模拟卷.pdf 计算机二级C语言模拟卷.pdf C 模拟题 答案 .docx 。。。 C语言程序设计实验答案类与对象.doc C语言程序设计实验答案类与对象.doc C+模拟题答案.pdf 。。。 C+模拟题答案.docx 。。。
C语言
70,020
社区成员
243,266
社区内容
发帖 与我相关 我的任务 C语言 C语言相关问题讨论 复制链接
扫一扫 分享 确定 社区描述 C语言相关问题讨论 社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告 试试用AI创作助手写篇文章吧
+ 用AI写文章