C++实验六

实验六 类与对象(二)

【实验目的】

1、掌握类的构造函数和析构函数的概念和使用方法;

2、掌握对象数组、对象指针的定义和使用方法;

3、掌握new和delete的使用方法;

【实验内容】

1、 设计描述平面坐标上的点CPoint类,该类满足下述要求:

•具有x,y坐标信息;

•具有带默认形参值的构造函数,参数分别用于初始化x和y坐标信息;

•具有获取x、y信息的GetX和GetY函数,具有设置x、y信息的SetX和SetY函数;

2、 设计一个矩形类CRectangle,该类满足下述要求:

•具有矩形的左下角和右上角两个点的坐标信息,这两个点的数据类型是CPoint;

•具有带参数的构造函数CRectangle(const CPoint &, const CPoint &),参数分别用于设置左下角和右上角两个点的坐标信息;

•具有设置左下角和设置右上角的两个点坐标的功能SetLPoint(const CPoint &)和SetRPoint(const CPoint &);

•具有获得周长(GetPerimeter)和获得面积(GetArea)的功能。

3、 在main函数中,完成以下工作:

•动态创建一个CRectangle类的对象a_rectagnle,其初始的左下角和右上角坐标分别为(2,5)、(6,8);调用GetPerimeter和GetArea获得矩形周长和面积,并将周长和面积显示在屏幕上;

•调用SetLPoint设置a_rectagnle的左下角为(4,6),调用SetRPoint设置a_rectagnle的右上角为(7,9);调用GetPerimeter和GetArea获得矩形周长和面积,并将周长和面积显示在屏幕上;

•销毁该动态创建的对象。

 1 #include<iostream>
 2 using namespace std;
 3 class CPoint
 4 {public:
 5     CPoint(float x=0,float y=0){this->x=x;this->y=y;}
 6     float GetX(){ return x;}
 7     float GetY(){ return y;}
 8     void SetX(float x){ this->x=x;}
 9     void SetY(float y){ this->y=y;}
10  private:
11     float x,y;
12      //数据域
13 };
14 class CRectangle
15 {public:
16     CRectangle(){}
17     CRectangle(const CPoint &LPoint,const CPoint &RPoint){ this->LPoint=LPoint;this->RPoint=RPoint;}
18     void SetLPoint(CPoint lp){ LPoint.SetX(lp.GetX()); LPoint.SetY(lp.GetY()); }
19     void SetRPoint(CPoint rp){ RPoint.SetX(rp.GetX()); RPoint.SetY(rp.GetY()); }
20     float GetPerimeter(){return 2*(RPoint.GetX()-LPoint.GetX()+RPoint.GetY()-LPoint.GetY());}
21     float GetArea(){ return (RPoint.GetX()-LPoint.GetX())*(RPoint.GetY()-LPoint.GetY());}
22 private:
23     CPoint LPoint,RPoint;
24 };
25 int main(){
26     CPoint p1(2,5),p2(6,8);
27     CRectangle *p=new CRectangle(p1,p2);//动态创建一个CRectangle类的对象
28     cout<<"the Initial RectanglePerimeter: "<<p->GetPerimeter()<<endl;//获得矩形周长
29     cout<<"the Initial RectangleArea: "<<p->GetArea()<<endl;//获得矩形面积
30     CRectangle  a_rectagnle;
31     CPoint p3(4,6),p4(7,9);
32     a_rectagnle.SetLPoint(p3);//设置a_rectagnle的左下角为(4,6)
33     a_rectagnle.SetRPoint(p4);//设置a_rectagnle的右上角为(7,9)
34     cout<<"the changed RectanglePerimeter: "<<a_rectagnle.GetPerimeter()<<endl;//获得矩形周长
35     cout<<"the changed RectangleArea: "<<a_rectagnle.GetArea()<<endl;//获得矩形面积
36     delete p;
37     return 0;
38 }

【错误及改正方法】:一:开始不明白this指针的使用方法,把类内数据成员和形参搞混了;改正方法,了解了this指针的使用方法

posted @ 2013-12-08 23:50  a梦想去柬埔寨  阅读(636)  评论(0编辑  收藏  举报