实验十_运算符重载答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档