C++和Java主要区别

@wanqiuz 2018-04-24 08:46:19发表于 wanqiuz/blog-articles C++Java

1 访问控制

都有public,protected,private三级访问控制
此外,java还有包访问控制,c++有友元。

2 继承

C++有public继承、protected继承、private继承,Java只有public继承。
C++支持多重继承,它允许一个类继承多个父类。Java不支持多重继承,但允许一个类继承多个接口。
C++方法默认是非虚的,可用virtual关键字指定为虚函数。Java方法默认是虚的,可用final关键字禁止override。

3 构造和析构

对象构造大致相同,但是c++在构造函数中调用虚函数无法多态(因为对象的子类部分还没构造)
c++可以定义析构函数,java没有析构函数(java提供一个终结方法,但它和析构函数不是等价的)

4 内存管理

c++主要靠手动申请,手动释放或者借助RAII技术,Java依靠gc。
C++的手动管理内存主要靠指针实现,经常出现野指针造成的系统崩溃。Java增加了自动内存管理功能,提高了程序安全性。
对于异常处理,C++没有finally语句块,可以用RAII技术实现函数多出口情况的析构。

5 兼容面向过程编程 vs 完全面向对象

Java是完全面向对象的语言,所有函数和变量都被封装在类中。除了基本数据类型之外,其余的都作为类对象,包括数组。而c++允许将函数和变量定义为全局的。

6 操作符重载

操作符重载被认为是c++的突出特征。而Java语言不支持操作符重载,以牺牲方便性为代价,使语言尽可能的简单。

7 字符串

C++不支持字符串变量,C++程序中使用'\0'终止符代表字符串的结束,在Java中字符串是用类对象(String、StringBuilder、StringBuffer)来实现的。

8 类型转换

C++支持隐式类型转换、显式类型转换。Java只支持显示类型转换。