Problem A: Shape类(多态,虚函数)
Description:
定义一个基类Shape,在此基础上派生出Rectangle和Circle,二者都有getArea( )函数计算对象的面积。使用Rectangle类创建一个派生类Square。根据下面给出的main()函数,编程实现各个类,使程序能够正确运行,并符合给出的输出结果。
Sample Input
Sample Output
The area of the Circle is 78.5
The area of the Rectangle is 24
The area of the Square is 25HINTAppend Code
Append Code:
int main()
{
Shape * sp;
sp = new Circle(5);
cout << "The area of the Circle is " << sp->getArea () << endl;
delete sp;
sp = new Rectangle(4, 6);
cout << "The area of the Rectangle is " << sp->getArea() << endl;
delete sp;
sp = new Square(5);
cout << "The area of the Square is " << sp->getArea() << endl;
delete sp;
return 0;
code:
#include <iostream>
using namespace std;
class Shape
{
public:
virtual double getArea()=0;
virtual ~Shape(){}
};
class Rectangle:public Shape
{
public:
int a,b;
Rectangle(int x,int y):a(x),b(y){}
Rectangle(){}
double getArea()
{
return a*b;
}
~Rectangle(){}
};
class Circle:public Shape
{
public:
int r;
Circle(int x):r(x){}
double getArea()
{
return 3.1*r;
}
~Circle(){}
};
class Square:public Rectangle
{
public:
int a;
Square(int x){a=x;}
Square(){}
double getArea()
{
return a*a;
}
~Square(){}
};
int main()
{
Shape * sp;
sp = new Circle(5);
cout << "The area of the Circle is " << sp->getArea () << endl;
delete sp;
sp = new Rectangle(4, 6);
cout << "The area of the Rectangle is " << sp->getArea() << endl;
delete sp;
sp = new Square(5);
cout << "The area of the Square is " << sp->getArea() << endl;
delete sp;
return 0;
}