C++习题与解析(重载-03) |
|
www.nanhushi.com 佚名 不详 |
题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
|
|
|
文章录入:杜斌 责任编辑:杜斌 |
|
上一篇文章: C++习题与解析(重载-02) 下一篇文章: C++习题与解析(重载-04) |
【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
|