济南奥体文博片区规划:C++,缺点????

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/08 11:38:41
C++与JAVA相比有什么缺点呢??/

1。面向对象没有java彻底。
由于C++要兼容C的内容,而C是面向过程的,所以C++不可避免地出现过程影子,并不算是完全的面向对象的程序设计语言。例如总得要有main或winmain之类的过程吧。

2。C++的移植能力没有java好。
由于C++的事实标准的存在,即各个编译器总存在差异,所以或多或少存
在不兼容。而且各个软件平台的C++启动代码和硬件指令不同,编译后的C++程序一般是不能跨平台的。而java从娘胎里出来就是为了跨平台执行的,不采
用二进制机器码作为最终代码,所以在移植方面较好。

3。C++的指针操作使得它不安全。
java没有指针,而C++的指针越界或野指针是造成弄脏内存的重要原因。
但是事情总得一分为二,C++的指针也是其效率大大超过java的原因之一。

3。C++可以直接操作硬件,带来了不安全。
java不提供硬件操作,而C++兼容C,使得它继承了其硬件操作功能,
是祸是福,各有说词。有人说它带来了不安全,也有人说它是所向披靡
的屠龙之器。

4。C++的动态对象必须及时销毁,否则可能会造成内存泄漏,而java免除了这个麻烦
java用垃圾收集器清楚不用的对象,而C++没有相关机制,使得上下
文终对象的建立和销毁不成对,就会造成内存泄漏。

5。C++的在网站建设方面不如java“强”
因为C++应该没有java在项目开发上来得快捷。之所以加引号,是因为
开发%BPOST http://zhidao.baidu.com/q HTTP/1.0
ProxA3java通常显得更健壮。
对象句柄一定初始化为null
句柄会得到检查,出错则抛弃异常
数组会检查界限
提供多线程等

我认为,没有缺点,只有区别:
1.说到难起步,LISP等语言会更难起步,汽车比摩托车难起步难道汽车就比自行车差么,应用领域不同,难度就没有可比性。
2.虽然指针操作麻烦危险,但是它高效,简洁,没有听说哪个熟练使用C++的程序员会说指针操作麻烦危险,不应该把对语言的理解程度不同而造成的问题说成语言自身的问题。同样,对于JAVA新手来说,JAVA的对象引用(其实就是指针)的难度往往是致命的而不是出个语法错误那么简单了。
3.JAVA脱离完整的官方架构和库支持,想写一个网页插件不比C++容易多少,而C++如果有好的库(这方面的库很多),写个网页插件会更容易。这点是把语言和整个开发环境2个概念弄混淆了。BASIC通过VB的诠释,其能力不是QBASIC能体现的。
3.JAVA依赖虚拟机实现的跨平台的确C++是没办法比的,但是由于这个关系JAVA只有C++ 1/50的运行速度也是没办法改变的。
4.C++支持OO,PO,甚至即将到来的AO,只能是其语言强大的表现,何来缺点之有?不是所有编程OO都实用的,有个话说的好:存在即真理。

言语刻薄,呵呵,PP

------------------------------------------------------
楼上1。说到OO不彻底,我的意见是这样应该是更好的,OO作为一个程序设计理念,它不是万能的,在某些应用场合,比如单片机,作为一个纯面向对象的语言,类的概念只会给程序编写带来束缚,原因还是那样,绑在一棵树上,就是等死。灵活运用OO不是说应该把思想禁锢在OO中,"遇事皆OO",那是90年代学术上的迂腐思想了,实际应用,只要灵活,有效,我们就应该说它是能较好解决问题的,而不应该过分强调没有使用某种设计理念,这点上,我不认为OO是OP的进化,他们是平行的才对。说道main,难道JAVA想运行起来就不需要main了么?

楼上2:这点的确C/C++是没有办法避免的,我自己也是很头痛的(总是要在三个系统中处理这些无聊问题),但是,还是那样的,事物总有2面性,解决了移植带来了速度问题,虽然SUN一再强调VM可以做到编译级速度,而且我们自己实现的VM也已经达到了客户的即时响应标准,但是,在速度上的牺牲这个不管怎么掩盖也是一个弊端,可能随着硬件的进步,这个弊端越来越不明显了吧。事情总是向好的地方发展。

楼上3。指针,总是所有人极力想避讳的话题,其实你想想,虽然JAVA有效的避免了越界,野指,假如我的越界和野指是我自己的需求该怎么办,牺牲了灵活性,事物的2面性再次体现。

楼上4说道GC,呵呵不知道有没想过,这个才是JAVA真正的郁闷,事实上,你不知道你的对象什么时候被确定销毁了,虽然这个在小应用程序中可能不需要在意,但是在稀缺资源设备上,这个是致命的,以至于很多好的特性不能使用,被迫回到原始时代呵呵,虽然C++会难免造成遗忘释放,但是,我知道我释放了这个对象,那么它就真的释放了,我对它的所有引用都不再有效了,而JAVA却是不一定的,在多线程交互的程序中尤为明显。还是2面性的问题呵呵。

楼上5我维持我自己观点,还是混淆了语言和平台,其实你那样比较跟拿BASIC和VB比较没什么2样,同样,你是拿带JDK的JAVA和没有带任何库的C++来比较,我只能说,利用成型的库,使用C++来构建不会比JAVA难的,如果你不import,自己利用自己写的代码来构建。。。

我这么说不是说C++就是完美的,也不是批判JAVA的愤青,只是,在编程语言中,我们不能随便的比较某2个语言,语言是依赖环境而存在的,单一的语言,都是没有什么价值的,事物的2面性,让很多说这个语言好,那个语言差的言论是没有根据的,所以我想,区别比缺点更能说明一些问题.

比较难起步,让人望而却步
指针操作麻烦危险
没有象后者方便的网页插件编程能力
JAVA一次编译全部通用C++不行

根本不是一个类型的语言,没什么好比较的。

应该拿C++和Object Pascal做比较,拿Java和C#做比较。

上二楼的说得太完美了

C++可以说是面向对象和面向过程的混合体
而JAVA是直接面向对象的