CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

讨论一下c++引用与java中引用的区别

楼主freezh(只提供思路)2006-03-04 20:42:21 在 C/C++ / C++ 语言 提问

以前一直以为它们是一样的,今天一下子觉得二者本质上是不同的,c++中一个引用指向的地址不会改变,改变的是指向地址的内容,然而java中引用指向的地址在变!!  
   
   
  不知道我的理解对不对,请讨论 问题点数:20、回复次数:8Top

1 楼steedhorse(晨星)回复于 2006-03-04 21:06:56 得分 0

如果非要对比着看,那么Java中的“引用”倒是和C/C++的指针更像一些,和C++的“引用”很不一样。Top

2 楼yxg80(林夕昱)回复于 2006-03-04 21:13:49 得分 0

哈哈,不过现在招java的公司多一些啊!!Top

3 楼steedhorse(晨星)回复于 2006-03-04 21:15:47 得分 0

楼主说的没错,C++的“引用”是从一而终的,而Java的“引用”可以改变被引用的对象。  
  它们只是用了同一个词而已,其实没有必要非得对比着看的。Top

4 楼ox_thedarkness()回复于 2006-03-04 21:19:04 得分 0

java去除指针概念,就用引用罗...    
  你看   java:  
   
  A   a   =   new   A(1);  
  A   b   =   new   A(2);  
  b   =   a;  
   
  没有问题,a   和   b引用同一个对象A(2),原来的A(1)成为没有被引用的对象。   垃圾回收机制会在之后的某个时刻把A(1)干掉。  
   
   
   
   
  而C++则不然。C++的引用就语义上说是“别名”,而并不是指针的另一种用法:  
   
  A   a   =   A(1);    
  A   b   =   A(2);  
  A&   c   =   b;       //c   是   b的别名  
  c   =   a;             //并不是   c   引用   a,而是拷贝操作   c.operator=   (   a   )  
   
   
  就语言机制来说,java的引用是用来管理和命名对象;  
  而,C++的引用机制是很纯粹的,就是别名而已。  
   
  每种语言的特性都是整体的有机部分。  
   
   
  我们知道,   java的引用机制是一个很复杂的机制。他必须区分“基本对象”和“复合对象”,你可以想象一下,如果其中没有基本对象,那么我们如何完成对象的复制?   唯一的解决方案是提供两个等于号,或者一律用构造函数....     但是综合来看,他和垃圾回收形成了相当完美的组合方案。  
   
   
  而C++   的引用机制为运算符重载提供了大幅度的支持。C++   的引用是用类“模拟”基本对象的根本要求。     如果C++使用java那种引用,那么原本漂亮的   operator[]、   proxy   class   等就很难实现了。   更进一步,   C++   的运算符重载对   C++   的模版机制提供了强力的支持。Top

5 楼noOnlyCode(不错,偶就是传说中高数上下册都考80多分的牛逼人物!)回复于 2006-03-04 22:29:12 得分 0

而C++   的引用机制为运算符重载提供了大幅度的支持。C++   的引用是用类“模拟”基本对象的根本要求。     如果C++使用java那种引用,那么原本漂亮的   operator[]、   proxy   class   等就很难实现了。   更进一步,   C++   的运算符重载对   C++   的模版机制提供了强力的支持。  
   
  --------------  
  不懂ing……,介绍本可以明白这段话的书来。Top

6 楼fiftymetre(50米深蓝)回复于 2006-03-04 22:42:00 得分 0

C++引用在创建时必须进行初始化,而且不可重定义到一个不同的位置。但Java引用并不一定局限于创建时的位置。它们可根据情况任意定义,这便消除了对指针的部分需求。  
   
  偶不会JAVA顶一个吧Top

7 楼windywater(超级宇宙无敌大白痴)回复于 2006-03-05 00:11:42 得分 0

个人感觉Java里的引用像个二级指针。Top

8 楼jobs002(Oh! Office)回复于 2006-03-05 09:29:49 得分 0

除了收藏,没有办法。Top

相关问题

  • c++与java的区别
  • java和c++的区别
  • 一个关于c++和java 的区别?
  • C#高手帮忙解惑: C#中的字符串和数组都是引用类型,有什么区别?
  • compareto,equals ,==在java中相对于值和引用比较的区别
  • C#的using和java的import,以及c++的#include的区别?
  • C++中的引用
  • 请问在c++中引用参数和指针到底有什么区别?谢谢!
  • c#到底是和物,它与vc,java有和区别呢?
  • java中的import和C中的include到底有什么区别?

关键词

  • c++
  • 指针
  • java
  • 引用
  • 运算符重载
  • 对象
  • 机制
  • 别名
  • 指向
  • 基本

得分解答快速导航

  • 帖主:freezh

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo