題1.分析以下程序的執(zhí)行結(jié)果
#include
void swap(int &x,int &y)
{
int temp;
temp=x; x=y; y=temp;
}
void main()
{
int x=10,y=20;
swap(x,y);
cout<<"x="< }
解:
這里的函數(shù)采用引用調(diào)用的方式,所以輸出為:x=20,y=10
注意:在函數(shù)調(diào)用里,引用調(diào)用與傳址調(diào)用的效果相同,但更加簡潔直觀。
題2.分析以下程序的執(zhí)行結(jié)果
#include
void main()
{
int a[]={10,20,30,40},*pa=a;
int *&pb=pa;
pb++;
cout<<*pa< }
解:
pa為數(shù)組的指針,首先指向a[0],pb是pa的引用,當(dāng)執(zhí)行pb++時,也使pa指向了a[1],所以輸出為:20
題3.分析以下程序的執(zhí)行結(jié)果
#include
class Sample
{
int x;
public:
Sample(){};
Sample(int a){x=a;}
Sample(Sample &a){x=a.x++ +10;}
void disp(){cout<<"x="< };
void main()
{
Sample s1(2),s2(s1);
s1.disp();
s2.disp();
}
解:
Sample類的Sample(Sample &a)構(gòu)造函數(shù)是一個拷貝構(gòu)造函數(shù),將a對象的x增1然后加上10后賦給當(dāng)前對象的x,由于a是引用對象,所以輸出為:
x=3 // ++運算的結(jié)果
x=12 // 2+10
#include
void swap(int &x,int &y)
{
int temp;
temp=x; x=y; y=temp;
}
void main()
{
int x=10,y=20;
swap(x,y);
cout<<"x="<
解:
這里的函數(shù)采用引用調(diào)用的方式,所以輸出為:x=20,y=10
注意:在函數(shù)調(diào)用里,引用調(diào)用與傳址調(diào)用的效果相同,但更加簡潔直觀。
題2.分析以下程序的執(zhí)行結(jié)果
#include
void main()
{
int a[]={10,20,30,40},*pa=a;
int *&pb=pa;
pb++;
cout<<*pa<
解:
pa為數(shù)組的指針,首先指向a[0],pb是pa的引用,當(dāng)執(zhí)行pb++時,也使pa指向了a[1],所以輸出為:20
題3.分析以下程序的執(zhí)行結(jié)果
#include
class Sample
{
int x;
public:
Sample(){};
Sample(int a){x=a;}
Sample(Sample &a){x=a.x++ +10;}
void disp(){cout<<"x="<
void main()
{
Sample s1(2),s2(s1);
s1.disp();
s2.disp();
}
解:
Sample類的Sample(Sample &a)構(gòu)造函數(shù)是一個拷貝構(gòu)造函數(shù),將a對象的x增1然后加上10后賦給當(dāng)前對象的x,由于a是引用對象,所以輸出為:
x=3 // ++運算的結(jié)果
x=12 // 2+10

