实验十_运算符重载答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验十运算符重载1.实验目的及要求
1)掌握运算符重载的基本概念和方法。
2)熟习几种特殊的运算符的重载。
2.实验内容
1.分析下面的程序,指出程序运行的结果:
1)
#include
class point{
int x,y;
public:
point(int vx,int vy){
x=vx; y=vy;}
point(){x=0,y=0;}
point operator+(point p1)
{
int px=x+p1.x;
int py=y+p1.y;
return point(px,py);
}
point operator-(point p1)
{
point p;
int px=x-p1.x;
int py=y-p1.y;
return point(px,py);
}
void print(){cout< }; void main(void) { point p1(10,10),p2(20,20); p1=p1+p2; p1.print(); //p2.print(); //p3.print(); } 程序分析: 运行结果为: 30,30 Press any key to continue 2)分析下面程序,指出程序运行的结果: #include static int dys[]={31,28,31,30,31,30,31,31,30,31,30,31}; class date { int mo,da,yr; public: date(int m,int d,int y){mo=m;da=d;yr=y;} date(){} void disp() {cout< date operator+(int day) { date dt=*this; day+=dt.da;//cout< while(day>dys[dt.mo-1]) {day-=dys[dt.mo-1];//cout< if(++dt.mo==13) {dt.mo=1; dt.yr++; } } //cout< //dt.disp(); dt.da=day; return dt; } }; void main(void) { date d1(5,31,2009),d2; //d1.disp(); d2=d1+20; d2.disp(); } 程序运行结果: 6/20/2009 Press any key to continue 3)p256 5.14 5.15 5.16 5.14实验结果: 7 6 Press any key to continue 5.15实验结果: This is C++book. 第1个字符:T 第16个字符:. 第25个字符:数组下标超界! Press any key to continue 5.16实验结果: m=1.5千米 Press any key to continue 三. 编写并调试程序. 定义一个描述平面上一个点的类point,重载“++”和“--”运算符,并区分这两种运算符的前置和后置操作,构成一个完整的程序。(参考例5.8) 程序代码: #include using namespace std; class point{ public: point(int I1=0,int I2=0,int I3=0); void print(); point operator--(); point operator--(int); point operator++(); point operator++(int); private: int i,j,k; }; point::point(int I1,int I2,int I3) {i=I1;j=I2;k=I3;} void point::print() {cout<<"i: "< {--i;--j;--k; return *this;} point point::operator --(int) {point temp(*this); i--;j--;k--; return temp;} point point::operator ++() {++i;++j;++k; return *this;} point point::operator ++(int) {point temp(*this); i++;j++;k++; return temp;} int main() {point obj1(4,5,6),obj2,obj3(11,12,13),obj4;