
6个回答
展开全部
我的理解主要是操作对象的问题
传值:
函数调用入口参数时,一般都会创建副本或者调用类对象的拷贝构造函数,所以操作结束后入参的值没有变化,变化的只是副本
引用:
则是直接操作原来的对象,不会建立副本,对该对象做的操作,会直接影响到原来传入的变量或者对象
引用会给程序带来不安全的因素,除非必要时,很少会用到引用
传值:
函数调用入口参数时,一般都会创建副本或者调用类对象的拷贝构造函数,所以操作结束后入参的值没有变化,变化的只是副本
引用:
则是直接操作原来的对象,不会建立副本,对该对象做的操作,会直接影响到原来传入的变量或者对象
引用会给程序带来不安全的因素,除非必要时,很少会用到引用
展开全部
panelwork说的区别是对的,但最后一句话我不赞同,引用传递实际上是经常用的,比如C++里面自己定义类时,拷贝构造函数必然要用引用传递.或者当比较大的类作为函数参数时,一般也用引用传递,但为了防止误操作,可以加const
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2010-01-14
展开全部
简单的说,传引用的参数,可以改变调用该函数中时传入的变量的值(就像传地址),传值则不可以改变调用时传入的变量的值.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C++传值调用需要创建一个实参副本,所以要重新开辟一块内存,进行赋值拷贝动作。
引用传参,因为引用是变量的别名,所以不需要进行重新分配内存,重新赋值,可以节约系统资源。
引用传参,因为引用是变量的别名,所以不需要进行重新分配内存,重新赋值,可以节约系统资源。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
/C++中传值调用参数和引用调用参数具体的区别?
#include <iostream>
int max(int a,int b)
{ if(a>b)
return a;
else
return b;
}
void ma(int &a,int &b)
{
if(a>b)
cout<<a;
else
cout<<b;
}
int main()
{ int x=5,y=7;
int &i=x; //表示i是x别名,也就是存贮在相同单元里
int &j=y; //同理
cout<<max(x,y); //x,y值作为拷贝副本传递a和b;
ma(i,j);
cout<<x<<" "<<y;//i和j的值变化会影响到x和y;
return 0;
}
#include <iostream>
int max(int a,int b)
{ if(a>b)
return a;
else
return b;
}
void ma(int &a,int &b)
{
if(a>b)
cout<<a;
else
cout<<b;
}
int main()
{ int x=5,y=7;
int &i=x; //表示i是x别名,也就是存贮在相同单元里
int &j=y; //同理
cout<<max(x,y); //x,y值作为拷贝副本传递a和b;
ma(i,j);
cout<<x<<" "<<y;//i和j的值变化会影响到x和y;
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询