http://www.blogjava.net/Jack2007/archive/2007/11/11/159665.html

1 Java 是完全封装的,而 C++ 的函数是可以定义在 Class 的外部的。从这里就可以看出 C++ OO 思想不够彻底,至少在封装这一点上。

不知道这里说的函数是可以定义在Class的外部指的是成员函数还是自由函数?
如果是前者, 看不出将成员函数体写在Class外和封装有何关系 ……
如果是后者, C++的定义就是general purpose,而非OO only。
OO彻底有好处吗?

3. Java 的世界是 Object 世界(当然除了基本类型,这是 Java 美中不组的一点),对象之间的关系是 Reference 的,象 C++ 中的指针,我们叫他句柄。但在 C++ 中对象之间是可以直接赋值的!在 Java 中只是句柄和句柄之间的转换! Java C++ 都有 this, C++ this 表示指针,而在 Java 我们叫他引用。但在用法上大同小异。

美中不足? 那是因为如果基本类型都要在堆上分配,会造成连Java也受不了的效率损失。
这可以叫做Java的矛盾之处。 明明这个世界不是Object Only的世界, Java非要认为它是。
然后在int这里开点后门,在genric programming这里开点后门(还开得跟玩笑似的),然后对自由函数说,对不起这里是OO的。

4. C++ 中有所谓的析够函数,而 Java 中也有一个类似的东西叫做 finalize, 是 Object 类的一个方法, Java 中有个很好的东东就是自动回收机制。而 C++ 中你 new 的东西不 delete 的话是不会自动清理内存的,所以 Java 省事些啊 !

省去的事, 终究得有人做。

看是手工做、高效做、也可以说高错误率做,还是自动做,低效做、也可以说低错误率做。
而错误率是人为的, 任何语言都可以写出糟糕的代码。
任何语言也可以经过训练来减少编程错误。
但是Java注定低效。
C++有多种SmartPoint,同时C++0x会加入可选的GC。 关于这个就说到这里。

没有析构函数以及自动变量, 程序员省事2字还得打上问号。
没有RAII的支持, Java更容易写出臃肿并错误的代码。


17 C++ 中有模板的概念 ( 类模板,函数模板 ) ,在早期的 Java 版本 (1.4 之前 ) ,没有模板的概念,但 1.5 引入了范型,与模板的思想类似,这可是好东西。如果你看 Java 原码库,你会发现他变化的好大。

Java的范型只是玩具而已。


小结 :
3. 相比之下你会觉得 Java 的世界更美好。但要学好 Java 你没有理由不去学 C++

没有丝毫感觉到Java的美好。
后半句还不错, 精通C++后精通Java容易, 精通Java后学C++还得重学。

posted on 2008-11-03 07:10 OwnWaterloo 阅读(514) 评论(3)  编辑 收藏
::...
免责声明:
当前网页内容, 由 大妈 ZoomQuiet 使用工具: ScrapBook :: Firefox Extension 人工从互联网中收集并分享;
内容版权归原作者所有;
本人对内容的有效性/合法性不承担任何强制性责任.
若有不妥, 欢迎评注提醒:

或是邮件反馈可也:
askdama[AT]googlegroups.com


点击注册~> 获得 100$ 体验券: DigitalOcean Referral Badge

订阅 substack 体验古早写作:


关注公众号, 持续获得相关各种嗯哼:
zoomquiet


自怼圈/年度番新

DU22.4
关于 ~ DebugUself with DAMA ;-)
粤ICP备18025058号-1
公安备案号: 44049002000656 ...::