对比C++和Java语言不同点

毕业之后一直做Java应用,很少接触C++的使用,所以对C++忘得很多了,但还是觉得C++在某些方面是不可替代的,最近又翻了一下C++的书,总结了一些C++和Java不同的地方罗列下面,个人理解,必有不是和遗漏之处,如发现请帮忙指出以改正 

 

区别概述
Java
C++
面向对象特性
一切皆是对象,在Java中所有东西都在类中定义,没有全局变量和方法,没有联合枚举
面向对象和面向过程的并集,其程序可以含有非类属性和方法构造
继承体系的
单根继承模式,所有类都是Object的子类
类型间没有统一的祖先类
文件类型
所有类型文件均是.java类型文件,没有头文件。在Java中通过interface及implements完成接口及实现,并通过import引入需要的类
分为头文件,实现文件
C++中没有语法意义上的interface,而是用头文件收集对外提供的定义和声明,使用者再通过#include进行引入
操作符重载
java不支持操作符重载
C++支持操作符重载
运行环境
在java虚拟机上运行
直接在os上运行
继承
不支持多重继承
支持多重继承
程序入口方法
每个类都可以有main方法
只有一个全局main方法
多态
所有函数都是虚函数,不需要额外声明,在调用时自动进行动态绑定
需要用virtual声明类层次中的函数为虚函数
声明
没有方法和类声明,表示接口或实现不确定的可以用interface或抽象方法方式
必须先声明后使用,通常把声明放入头文件
资源导入
用"import 全包.类名"引入
用预编译"#inlude 头文件"引入
运算符
没有双字节运算符,因为所有对象都为引用方式,所以不区分对象绑定和指针间访操作
含有空间域操作符"::"和指针间访操作符"->"
基本类型
空间大小固定,char类型使用16位的Unicode表示,boolean和int不可自由转换
与平台相关
对象创建
对于所有不属于基本类型的对象,都只能通过new命令在堆中创建,但是不需要显式释放,GC可以自动完成垃圾收集
可以通过定义在堆栈中创建,在堆栈中创建的对象本体不需要显示释放;通过new创建的在堆中的对象,需要显式释放
命名空间
用包代替命名空间
 

 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值