C++对象引用作为函数参数的作用

2011-12-25 23:23:02 · 作者: · 浏览: 3112
分析以下程序的执行结果 
#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