| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 583 人关注过本帖
标题:关于“引用”在内使用上的问题
只看楼主 加入收藏
gujunpu
Rank: 1
等 级:新手上路
帖 子:23
专家分:3
注 册:2012-2-25
结帖率:60%
收藏
 问题点数:0 回复次数:3 
关于“引用”在内使用上的问题
在网上读到这样一句话,关于C++的:
使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的 副本;如果传递的是对象,还将调用拷贝构造函数。因此,当参数传递的数据较大时,用引用比 用一般变量传递参数的效率和所占空间都好。
——————————————————————————————————分割线——————————————————————————————————
我想问一下这句话“如果传递的是对象,还将调用拷贝构造函数。”,对象不是引用型变量吗(java中的概念,C++应该是一样吧),那最多在栈内生成一个实例首地址的局部变量,为什么还要调用拷贝构造函数,直接指向不就行了吗?还是说java和C++有差异?
可能是我文字上没有理解清楚,原文的意思是不是“只要传递对象,就要使用拷贝构造函数”?
搜索更多相关主题的帖子: 分割线 
2013-03-12 17:35
ren829
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:15
帖 子:255
专家分:1174
注 册:2006-3-11
收藏
得分:0 
我不知道C++,但是我知道这块是和JAVA有区别的,java基本上都是传递引用,java你传来传去,也是引用本身换来换去,对象本身是没有变化的,C++貌似是直接传递对象。
如果传递的是对象,还将调用拷贝构造函数。  这个你还要看上一句话,既然传递的是实参变量的副本,放到对象上自然是对象的一个副本,就如COPY一个对象一样,那肯定是要调用构造函数来生成这个副本对象的。
2013-03-12 18:58
gujunpu
Rank: 1
等 级:新手上路
帖 子:23
专家分:3
注 册:2012-2-25
收藏
得分:0 
回复 2楼 ren829
感谢你的回答。还是想问一下java和c++关于内存使用的区别,不知道有什么推荐的文献没有?
2013-03-12 19:54
shellingford
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:19
帖 子:228
专家分:1348
注 册:2010-8-9
收藏
得分:0 
回复 3楼 gujunpu
一般java不可直接操作内存,java的内存有jvm进行管理。

C++的内存由程序员管理,优点是高效,缺点是开发复杂容易出错。
2013-03-12 22:16
快速回复:关于“引用”在内使用上的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.050912 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved