免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3354 | 回复: 0
打印 上一主题 下一主题

Java 和 c++ 的区别对比 [2010年02月21日] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-21 18:19 |只看该作者 |倒序浏览

Java 和 c++ 的区别对比

1>     java 中不会涉及到内存管理方面的操作。 C++ 中需要我们自己动态的申请和释放内存。

在 C++ 中:
       Map  map;           //  表示定义了一个 map 类的对象,会在栈上为 map 对象分配内存空间。会调用类的默认构造函数进行初始化。

在 java 中:

// 表示定义了一个 map 的引用,没有分配内存空间。如下所示
Map map ;           
Map map = null;          // 两种写法的作用是一样的, 规范代码建议写成这种方式。

在 C++ 中:
Map* pmap = new Map();       //  表示自己动态的生成一个 Map 类的对象。会在堆上为 Map 对象分配内存空间,并调用默认的构造函数进行初始化。以后通过 pmap 指针来操作内存中Map 实例对象的数据和调用相关的方法。 注意 pmap 为 Map 类的一个指针,占 4个字节。

如果不再使用 pmap 指针 的时候,需要自己显示的释放内存空间。否则会造成内存泄露,如下所示:
delete pmap;   
pmap = NULL;

一般情况下, C++ 中的 new 操作的个数要和 delete 操作 的个数相对应,防止内存泄露的出现。

在 java 中:
Map map = new Map();        // 表示声明了一个 Map 对象的引用,并且为改引用指定了了一个实例对象。 在这里我们不用考虑内存的问题。Java 虚拟机会帮助我们自动的管理内存。


如果不再使用 map 对象的时候,直接将 map 赋值位 null 就可以了。Java 虚拟机会知道改如何释放内存,如下:
map = null;

(Java 中不用考虑内存的释放问题。确实很爽呀,但是最好自己心里要清楚,这过程实际发生了那些事情。。)

2>     C++中到处都在使用指针,但java 中没有指针的概念。 其实,我们可以用指针的思路去理解 java 中的对象引用,在怎么说, java 也是从 C++演化而来的,用 C++ 的设计思想去理解 Java 中的知识,应该不会太难。
3>     C++ 中,类的定义和实现部分一片时分开写的。C++  的代码分为类的定义部分和类的实现部分。
Java 中类的定义和实现都写在一起了。
4>     C++ 中的类分构造函数和析构函数。 Java 中的类只有构造函数。好像不存在析构函数的概念。
5>     C++ 可以同时从多个类进行继承。  Java 中只能从一个类进行继承。但是可以同时实现多个接口。

6> java 中对象直接进行赋值操作时,都是 引用传递。这个需要注意一下。


更新中。。。。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/49717/showart_2183476.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP