旋风少女晓莹是千金:形状(二)——虚函数

来源:百度文库 编辑:偶看新闻 时间:2024/05/08 14:59:53

                  

8、形状(二)——虚函数

(1)    将【形状(一)】 中的基类计算面积的方法定义为虚函数,比较与【形状(一)】程序的差异;

(2)    将【形状(一)】中的基类定义抽象类,比较与【形状(一)】程序的差异。

 

#include

#define PI 3.1415

using namespace std;

 

class Shape

{

public:

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

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

       virtual double Girth()=0;

       virtual double Area()=0;

};

 

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;

}