按值传递
默认情况下,在C + +是通过值来传递参数。当参数是按值传递的,复制的参数传给函数。
考虑下面的代码片段:
void foo(int y)
{
using namespace std;
cout << "y = " << y << endl;
}
int main()
{
foo(5); // first call
int x = 6;
foo(x); // second call
foo(x+1); // third call
return 0;
}
在第一次调用foo(),争论是文字5。当foo()称,变量y的创造,和5的值复制到Y变量y然后销毁时foo()结束。
在第二个foo(),参数是变量x x是评估生产的价值6。当foo()被称为第二次,变量y的再创造,和6的值复制到Y变量y然后销毁时foo()结束。
在第三电话foo(),实参是表达式x + 1。x + 1是评估生产的价值7,这是通过变量y变量y再次破坏时,foo()结束。
因此,该程序打印:
using namespace std;
cout << "y = " << y << endl;
y = 6;
cout << "y = " << y << endl;
} // y is destroyed here
int main()
{
using namespace std;
int x = 5;
cout << "x = " << x << endl;
foo(x);
cout << "x = " << x << endl;
return 0;
}