C++中传值调用参数和引用调用参数具体的区别?

不是定义形式上的区别... 不是定义形式上的区别 展开
 我来答
tn瓶邪
2015-08-14 · TA获得超过1881个赞
知道小有建树答主
回答量:610
采纳率:98%
帮助的人:112万
展开全部
两种参数都允许函数修改实参所对应的对象,两种类型的参数都允许有效得向函数传递大型类对象。
两者在参数传递过程中,有如下几点不同
(1)引用必须被初始化为指向一个对象,一旦初始化了,它就不能在指向其它对象。指针可以指向一系列不同的对象,当然也可以定义为NULL;
如:
calss Type{
void operation(const Type&p1,const Type&p2);
int main(){
Tyoe obj1;
Type obj2 = operation(obj1,0); //引用参数的实参不能为0
}
所以在函数中,一个参数可能指向不同的对象的情况,或者这个参数可能不指向任何对象,则必须实用指针参数。

(2)引用参数的一个重要用法,它允许我们在有效实现重载操作符的还能保证用法的直观性。如下例:
Matrix operator+(Matrix m1,Matrix m2)
{
Matrix result;
//do computation
return result;
}
通过上面实现后,就能够支持两个Matrix对象的加法,如:a+b
但是这样做,效率会非常低。因为该实现的实参是按值传递,两个Matrix对象相加的时候,内容被拷贝到operator+()函数的参数区中,因为Matrix对象非常大的时候,分配这样一个对象,并把它拷贝到函数参数区中的时间和空间开销比较高。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式