1 C++为了兼容C的语法,保留了很多破坏面向对象特性的关键字。简而言之,C++在OO上不够纯正。
2 C++里随时都存在一个sliced object的陷阱,我个人还没有找到一个明确的编码原则来避免这些错误。
3 Java能够在一片连续的内存中安置各式各样的对象,而C++总是力图做到精简的布局,抹杀了多样性--比如C++ 不支持不规则的多维数组、不规则的向量vector。
4 Java本身已经超越了一门语言,成为一个平台,有足够的兼容性够好的各方面的library。而C++各自为战太多年,现在还没有一个一统天下的趋势。按照斯特朗普的原话,甚至都没有一个C++的核心社区,一部分C++开发者认为C++是被微软主导的,另一部分开发者则认为是被AT&T主导的,实际上都是错的。而std库的内容跟java库比起来真是少得可怜。