pass by value和pass by reference在C++中有啥区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pass by value和pass by reference在C++中有啥区别?相关的知识,希望对你有一定的参考价值。

参考技术A 参考:http://zhidao.baidu.com/question/133325189

传值(pass by value):
函数调用入口参数时,一般都会创建副本或者调用类对象的拷贝构造函数,所以操作结束后入参的值没有变化,变化的只是副本

引用(pass by reference):
则是直接操作原来的对象,不会建立副本,对该对象做的操作,会直接影响到原来传入的变量或者对象

/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;

以上是关于pass by value和pass by reference在C++中有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

Python中的passed by assignment与.NET中的passing by reference、passing by value

值传递(pass-by-value)引用传递(pass-by-reference)以及函数与const关系

按值传递结果? [复制]

effective_c++条款20,用pass-by-reference-to-const替换pass-by-value

Effective C++条款20:宁以pass-by-reference-to-const替换pass-by-value。Test code

Python基础Pass-by-object