分析以下程序的执行结果 #include<iostream.h> class Sample { int x,y; public: Sample(){x=y=0;} Sample(int i,int j){x=i;y=j;} void copy(Sample &s); void setxy(int i,int j){x=i;y=j;} void print(){cout<<"x="<<x<<",y="<<y<<endl;} }; void Sample::copy(Sample &s) { x=s.x;y=s.y; } void func(Sample s1,Sample &s2) { s1.setxy(10,20); s2.setxy(30,40); } void main() { Sample p(1,2),q; q.copy(p); func(p,q); p.print(); q.print(); } 解: 本题说明对象引用作为函数参数的作用。Sample类中的copy()成员函数进行对象拷贝。在main()中先建立对象p和q,p与q对象的x,y值相同,调用func()函数,由于第2个参数为引用类型,故实参发生改变;而第1个参数不是引用类型,实参不发生改变。所以输出为: x=1,y=2 x=30,y=40 |