C++ 和 Java 的区别
C++ 和 Java 都可以作为面向对象语言,而 C++ 从 C 衍生而来,具有面向过程的功能。Java 在 JVM 上运行,方便在不同的平台之间进行移植。
- C++ 依赖于平台,在不同的平台上需要重新进行编译,Java 只需要一次编译为字节码后,字节码便可以在任何平台上执行。
- C++ 需要编译,Java 需要首先进行编译成字节码,然后字节码在 JVM 上解释执行。
- C++ 需要手动管理内存(new/delete),Java 可以自动管理内存。
- C++ 支持多重继承,Java 只支持单重继承,多重继承的效果可以通过 interface 来实现。
- C++ 中,方法和运算符可以进行重载(静态多态/编译期多态),Java 只支持方法重载,不允许运算符重载。
- C++ 通过 virtual 关键字来说明一个函数在派生类中是可以被重载的(动态多态/运行期多态),Java 里面没有 virtual 关键字,但是 Java 里面所有的非静态方法默认都是可以重载的(所有非静态方法默认都是 virtual 的)
- C++ 支持指针,Java 对指针的支持十分有限。
- C++ 没有内置的线程支持,大部分依赖于第三方库,Java 内置 thread 类来实现对线程的支持。
- Java 要求每个文件里的类名和其文件名是一致的,C++ 无此要求。
- 垃圾回收机制(gc)是 Java 最大的特点。
- C++ 支持 namespace 来划分不同的命名空间,Java 要求所有的函数必须定义在类中。
- C++ 支持传值或者传引用,Java 只支持传值。