题1.分析以下程序的执行结果
#include<iostream.h>
int add(int x,int y)
{
return x+y;
}
int add(int x,int y,int z)
{
return x+y+z;
}
void main()
{
int a=4,b=6,c=10;
cout<<add(a,b)<<","<<add(a,b,c)<<endl;
}
解:
本题说明重载函数的使用方法。这里有两个add()函数,一个的参数是2个,另一个的参数是3个,它们是根据参数个数自动区分的。
所以输出为:10,20
-------------------------------------------------
题2.分析以下程序的执行结果
#include<iostream.h>
class Sample
{
int i;
double d;
public:
void setdata(int n){i=n;d=0;}
void setdata(int n,double x)
{
i=n;d=x;
}
void disp()
{
cout<<"i="<<i<<",d="<<d<<endl;
}
};
void main()
{
Sample s;
s.setdata(10);
s.disp();
s.setdata(2,15.6);
s.disp();
}
解:
本题说明重载函数的使用方法。setdata()成员函数有2个,根据其参数个数自动加以区分。
所以输出为:
i=10,d=0
i=2,d=15.6
------------------------------------------------
题3.分析以下程序的执行结果
#include<iostream.h>
class Sample
{
int n;
public:
Sample(){}
Sample(int i){n=i;}
friend Sample operator-(Sample &,Sample &);
friend Sample operator+(Sample &,Sample &);
void disp(){cout<<"n="<<n<<endl;}
};
Sample operator-(Sample &s1,Sample &s2)
{
int m=s1.n-s2.n;
return Sample(m);
}
Sample operator+(Sample &s1,Sample &s2)
{
int m=s1.n+s2.n;
return Sample(m);
}
void main()
{
Sample s1(10),s2(20),s3;
s3=s2-s1;
s3.disp();
s3=s2+s1;
s3.disp();
}
解:
本题说明重载运算符-和+的使用。operator-和operator+两个友元函数实现两个对象的减法和加法。所以输出为:
n=10 // s2-s1
n=30 // s2+s1
---------------------------------------------------
题4.分析以下程序的执行结果
#include<iostream.h>
class Sample
{
int A[10][10];
public:
int &operator()(int,int);
};
int &Sample::operator()(int x,int y)
{
return A[x][y];
}
void main()
{
Sample a;
int i,j;
for(i=0;i<10;i++)
for(j=0;j<10;j++)
a(i,j)=i+j;
for(i=0;i<10;i++)
cout<<a(i,1)<<" ";
cout<<endl;
}
解:
本题说明重载下标运算符的使用方法。通过重载下标运算符,使得对于对象a,有a(i,j)等于a.A[i][j]。
所以输出为: 1 2 3 4 5 6 7 8 9 10
------------------------------------------------
题5.分析以下程序的执行结果
#include<iostream.h>
class Sample
{
int n;
public:
Sample(int i){n=i;}
operator++(){n++;} // 前缀重载运算符
operator++(int){n+=2;} // 后缀重载运算符
void disp()
{
cout<<"n="<<n<<endl;
}
};
void main()
{
Sample A(2),B(2);
A++; //调用后缀重载运算符
++B; // 调用前缀重载运算符
A.disp();
B.disp();
}
解:
本题说明重载运算符++的使用方法。operator++()为前缀重载运算符,operator++(int)为后缀重载运算符。A++的语句调用后缀重载运算符,++B语句调用前缀重载运算符。
所以输出为:
n=4
n=3