形状(一)

来源:百度文库 编辑:神马文学网 时间:2024/05/10 21:18:06

 

7、形状(一)

编写C++程序完成以下功能:

(1)    声明一个基类Shape(形状),其中包含一个方法来计算面积;

(2)    从Shape派生两个类矩形和圆形;

(3)    从矩形派生正方形;

(4)    分别实现派生类构造函数、析构函数和其他方法;

(5)    创建派生类的对象,观察构造函数、析构函数调用次序;

(6)    不同对象计算面积。

 

#include

#define PI 3.1415

using namespace std;

 

class Shape

{

public:

                   Shape() {cout<<"调用构造函数Shape"<

                   ~Shape() {cout<<"调用析构函数Shape"<

                   double Girth() {}

                   double Area() {}

};

 

class Rectangle: public Shape

{

private:

                   double len;

                   double wide;

 

public:

                   Rectangle(double l=0,double w=0) {len=l; wide=w; cout<<"调用构造函数Rectangle"<

                   void SetRectangle(double l=0,double w=0) {len=l; wide=w;}

                   ~Rectangle(){cout<<"调用析构函数Rectangle"<

                   double Girth() {return (len+wide)*2;}

                   double Area() {return len*wide;}

};

 

class Circle:public Shape

{

private:

                   double r;

 

public:

                   Circle(double radius=0) {r=radius; cout<<"调用构造函数Circle"<

    void SetCircle(double radius=0) {r=radius;}

                   ~Circle(){cout<<"调用析构函数Circle"<

                   double Girth() {return 2*PI*r;}

                   double Area() {return PI*r*r;}

};

 

class Square:public Rectangle

{

public:

                   Square(double x=0) {Rectangle(x,x); cout<<"调用构造函数Square"<

    void SetSquare(double x=0) {SetRectangle(x,x);}

                   ~Square(){cout<<"调用析构函数Square"<

};

 

int main()

{

                   Rectangle b;

                   Circle c;

                   Square d;

                   double x,y,m,n;

 

                   cout<

                   cin>>x>>y;

                   b.SetRectangle(x,y);

                   cout<<"矩形周长为:"<

                   cout<<"矩形面积为:"<

 

    cout<

                   cin>>m;

                   c.SetCircle(m);

                   cout<<"圆形周长为:"<

                   cout<<"圆形面积为:"<

 

    cout<

                   cin>>n;

                   d.SetSquare(n);

                   cout<<"正方形周长为:"<

                   cout<<"圆形面积为:"<

 

                   system("pause");

                   cout<

                   return 0;

}