一个小C++问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 01:45:52
生成一个Object抽象类,在其中声明double CalArea()为纯虚函数,从Object派生出:
Rect类(其中包含成员变量Point topleft,Point bottomright。其中Point为其子对象)、
Circle类(其中包含成员变量Point cc,double radius ),实现如下功能:
void main() { Object *obj[2]; obj[0]=new Rect(Point(0,0),Point(100,200)); obj[1]=new Circle(Point(100,200),100.0); int i; for (i=0;i<2;i++) { cout<<"the area is "<<obj[i]->calarea()<<endl; } }

#include <iostream>
using namespace std;
class Object
{
public:
Object(){}
virtual double calarea()=0;
};
class Point
{
public:
Point(){};
Point(double x,double y):x(x),y(y){}
double getX(){return x;}
double getY(){return y;}
private:
double x;
double y;
};
class Rect:public Object
{
public:
Rect(){};
Rect(Point tl,Point br):topleft(tl),bottomright(br){}
//在构造函数里可加入输入是否合法的判断
virtual double calarea();
private:
Point topleft;
Point bottomright;
};
double Rect::calarea()
{
return (bottomright.getY()-topleft.getY())*(bottomright.getX()-topleft.getX());
}
class Circle:public Object
{
public:
Circle(){};
Circle(Point c,double r):cc(c),radius(r){}
virtual double calarea();
private:
Point cc;
double radius;
static const double Pi=3.14;
};
dou