C++習(xí)題與解析(引用-03)

字號:

題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