编写一个抽象类Shape,在此基础上派生出类Rectangle和Circle,二者都有计算面积的函数,计算周长的函数

计算面积的函数为GetArea(),计算对象周长的函数GetPerim().
帮忙解答一下,谢谢啦~~

#include<iostream>

#define PI 3.1415926;

using namespace std;

class Shape  //抽象类的  定义

{

public:

 virtual double GetArea()  = 0;  //纯虚函数

 virtual double GetPerim()  = 0;  //纯虚函数

};

class Rectangle : public Shape   //矩形类,公有继承

{

public: Rectangle(double aa, double bb)   //带参数的 构造函数

  {

   a=aa;

   b=bb;

   cout<<"长"<<a<<"宽"<<b<<endl;

  }

 virtual double GetArea() 

  { 

   return a * b; 

  } 

 virtual double GetPerim()

  { 

   return 2*( a + b ); 

  }

private: 

 double a; 

 double b;

};

class Circle : public Shape    //圆类,公有继承    

 {

 public: Circle(double rr)      //带参数的 构造函数

    {

    r=rr;

    cout<<"半径"<<r<<endl;

   }  

    virtual double GetArea() 

    { 

     return r * r * PI; 

    }  

    virtual double GetPerim() 

    { 

     return 2 * r * PI;

    }

private: 

 double r;

};

 void main()

 { 

  double length, width;

  cout << "输入长和宽: "; 

  cin >> length >> width;

  Rectangle rect(length, width);

  cout << "面积是:"<< rect.GetArea() << endl<<"周长是:"<<rect.GetPerim()<<endl; 

  

  double rr; 

  cout << "输入半径: "; 

  cin >> rr; 

  Circle cir(rr);

  cout << "面积是:"<<cir.GetArea() << endl<<"周长是:"<<cir.GetPerim()<<endl;

 }

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-12-18
#include <iostream>using namespace std;class Shape{public: virtual double GetArea() = 0; virtual double GetP() = 0;};class Rectangle : public Shape{private: double a; double b;public: Rectangle(double aa, double bb) {a=aa;b=bb;cout<<"长"<<a<<"宽"<<b<<endl;} virtual double GetArea() { return a * b; } virtual double GetP() { return a + a + b + b; }};class Circle : public Shape{private: double r;public: Circle(double rr) {r=rr;cout<<"半径"<<r<<endl; } virtual double GetArea() { return r * r * 3.14; } virtual double GetP() { return 2 * r * 3.14; }};void main(){ double length, width; cout << "输入长和宽: "; cin >> length >> width; Rectangle rect(length, width); cout << "面积是:"<< rect.GetArea() << endl<<"周长是:"<<rect.GetP()<<endl; double rr; cout << "输入半径: "; cin >> rr; Circle cir(rr); cout << "面积是:"<<cir.GetArea() << endl<<"周长是:"<<cir.GetP()<<endl;}
第2个回答  2009-12-08
呵呵,自己思考思考吧,这是编程的基础题了,不思考就学不会如何编程了。
相似回答