C 习题和解析(重载-03)
2008-02-23 05:34:32来源:互联网 阅读 ()
#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
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: C 习题和解析(重载-01)
下一篇: C 习题和解析(重载-04)
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash