分享

形状(一)

 BUPT-BYR 2010-12-08

 

7、形状(一)

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

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

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

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

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

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

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

 

#include<iostream>

#define PI 3.1415

using namespace std;

 

class Shape

{

public:

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

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

                   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"<<endl;}

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

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

                   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"<<endl;}

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

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

                   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"<<endl;}

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

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

};

 

int main()

{

                   Rectangle b;

                   Circle c;

                   Square d;

                   double x,y,m,n;

 

                   cout<<endl<<"请输入矩形长和宽(用空格隔开):"<<endl;

                   cin>>x>>y;

                   b.SetRectangle(x,y);

                   cout<<"矩形周长为:"<<b.Girth()<<endl;

                   cout<<"矩形面积为:"<<b.Area()<<endl;

 

    cout<<endl<<"请输入圆形的半径:"<<endl;

                   cin>>m;

                   c.SetCircle(m);

                   cout<<"圆形周长为:"<<c.Girth()<<endl;

                   cout<<"圆形面积为:"<<c.Area()<<endl;

 

    cout<<endl<<"请输入正方形的边长:"<<endl;

                   cin>>n;

                   d.SetSquare(n);

                   cout<<"正方形周长为:"<<d.Girth()<<endl;

                   cout<<"圆形面积为:"<<d.Area()<<endl;

 

                   system("pause");

                   cout<<endl;

                   return 0;

}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多