形参的类型决定了形参和实参的交互方式,总体来说,形参可以分为引用类型和非引用类型。引用类型的形参,是直接绑定到其对应的实参上去。而非引用的形参,则是将实参的值通过拷贝的方式传递给形参,即形参和实参,是两个独立的对象。前者称为
引用传递,后者则是值传递。
值得一提的是指针形参,指针形参和其他的非引用形参一样,例:
void reset(int *ip){
*ip = 0; //改变指针ip所指对象的值
ip = 0; //只改变ip的局部拷贝,实参未被改变
}
int i = 42;
reset(&i);
cout<<"i="<<i<<endl;
对于传引用参数,同样举例:
void reset(int &i){
i = 0;
}
int j = 42;
reset(j);
cout<<"j="<<j<<endl;
二者相较,最好使用引用传值,而非拷贝传值。