| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2280 人关注过本帖
标题:用OO的思想来写C程序[原帖内容已被清除...]
取消只看楼主 加入收藏
pingf
Rank: 2
等 级:论坛游民
帖 子:33
专家分:66
注 册:2010-7-25
收藏
得分:0 
回复 19楼 Devil_W
我说过的,那个就是个宏,
或者说就是一个用C语言的模板,
按你说的,确实扯远了,而且我从来也不排斥C++的,就像我也非常喜欢用Qt一样.
但是拿C去实现一些特殊的东西有时候是件很有趣的事情,
我从来都没说过这个宏能比C++强大(尽管C++有些东西很不合理,但它仍旧非常强大的),
JCOOP只不过是一个宏的集合(核心的宏很小的,才不到1k行),怎么可能一门强大的语言比较呢?!!

是你非要我找出有了C++,还去整这些有什么用的?
所以我才跟你扯了这么多的....


我只是希望有兴趣的人能参与并享受参与的过程而已,你非要挣个啥?!!!

不过看来,你对C++的偏爱显然超过了C,这个我是可以理解的.语言什么的都无所谓.
一通百通的东西,不用去计较那么多.

至于你说的比较,我觉的没什么必要,不在于谁的水平高低...
编程不是拿来比较炫耀的,而是用来分享的....
我只是希望有兴趣的人能参与并享受参与的过程....

2010-07-26 00:54
pingf
Rank: 2
等 级:论坛游民
帖 子:33
专家分:66
注 册:2010-7-25
收藏
得分:0 
回复 19楼 Devil_W
还有这个JCOOP只是"模拟",所以本质上它不可能实现多态,
因为你把它完全展开后会发现它只不过是一堆结构体和函数指针而已.....
也正因此,你可以使用GCC直接编译.
但是写JCOOP的意义在于,使用它美化了一部分代码,使得设计类更加的像一些更为高级的语言(C++,JAVA)
尤其是类的构造与析构,会方便许多.


因为在JCOOP中所有类(堆上的)的使用都用的都是一个指针而已,
所以这样的类在转换时不会检测转换的错误,至于转换的结果,则符合地址靠前的原则.

当然JCOOP中还有一种类是在栈上的(以及用以表述继承关系)的时候,
其实就是
child {
    parent
    ....
}
这样的关系,转换的时候依旧遵循靠前的原则
而每个类的方法可以单独在一SHARE part中设计,这样就避免了每声明一个"类"时,分配过多的内存
用来存储函数指针.
著名的GObject(GNOME的基石之一)也是如此,因为C语言本身并没有这些机制
所以说只是一种"模拟",正像前面说的,是让你的C中设计"类"和JAVA等一样方便.

至于像泛型这类,如果你使用的是指针类型的,那么还是强制转换[并不会检测错误]
至于重载运算符,C语言本身就决定了无法通过宏和函数指针来实现,
而至于闭包等一些概念,也是不行的,当然你可以把函数指针的传递套着理解成类似的概念,
尽管这是不科学的.....


2010-07-26 01:11
pingf
Rank: 2
等 级:论坛游民
帖 子:33
专家分:66
注 册:2010-7-25
收藏
得分:0 
回复 22楼 pangding
呵呵,
对于C++隐藏的东西,学的多了自然就懂(我见过很多学了C++学了好久的,
    不明白构造与析构调用时的顺序的,不明白堆内存,栈内存的就更多了....),但是对于初学者并不是很好...
    而对于某些嵌入式的应用,即便是几个类的默认的隐式方法也可能导致问题的产生.
对于C++的语法,其实我觉的没有Ruby等好的(纯语法),ruby有很多"语法糖"
对于新兴的脚本语言,其实有的已经比较快了,速度早应该不是问题了,比如Lua(JIT),很多游戏都采用它作为脚本编程语言的.....
对于D_W,他肯定很热爱C++的,我也好久没有这么罗嗦了,呵呵,我早些时候也比较喜欢C++,但后来对于C++,就只爱Qt了....
2010-07-26 01:31
pingf
Rank: 2
等 级:论坛游民
帖 子:33
专家分:66
注 册:2010-7-25
收藏
得分:0 
回复 35楼 哥只是传说
如果说网络方面,
后台服务用C++写一般用C#的快的多......
2010-07-27 18:24
快速回复:用OO的思想来写C程序[原帖内容已被清除...]
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016190 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved