值调用是指当发生函数调用时候,给形参分配内存空间,并用实参来初始化形参(直接将实参的值传递给形参).这一过程是参数值的单向传递过程,一旦形参获得了值,便于实参脱离了关系,此后无论形参发生了什么变化,都不影响实参了.
引用调用将引用作为形参,在执行主调函数中的调用语句时候,系统自动用实参来初始化形参.这样形参就成为实参的一个别名,对形参的任何操作就直接会作用于实参。
#include"iostream.h"
Class Sample
{char ch1,ch2;
public:
//*****error***//
friend void set(Sample s,char ch1,char ch2)
{s.ch1=ch1;
s.ch2=ch2;
}
void print(){cout<<"ch1="<<ch1<<"ch2="<<ch2<<endl;}
};
void main()
{Sample obj;
set(obj,'7','9');
obj.print();
}
//*****error***//下 为了改变对象的值,应使用引用调用。应该为
friend void set(Sample &s,char ch1,char ch2);