C++题目 抽象类
答案:2 悬赏:40
解决时间 2021-02-18 02:00
- 提问者网友:残阳碧曼
- 2021-02-17 10:24
生成一个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 "<calarea()< }
}
最佳答案
- 二级知识专家网友:转身后的回眸
- 2021-02-17 11:07
妈。的,找人做作业的。
全部回答
- 1楼网友:放肆的依賴
- 2021-02-17 12:27
抽象类的意思就是类有个成员函数中有至少一个纯虚函数,按照你题意里面的那个函数的话就是声明成virtual double calarea() =0;
抽象类是用来被继承的,也就是用来生成派生类用的,本身不能生成实例。
纯虚函数由子类来实现定义,如果有几个派生类的话,这几个派生类可以定义各自的和纯虚函数同名的函数,另外如果派生类中还是纯虚函数的话,那么该派生类也是抽象类,也不能生成实例。
例如你的例子里,double calarea()应该是个计算面积的函数,从object类派生的rect和circle类来看,object可以看成是图形类。因为各个图形的面积计算方法可能不同,例如rect(长方形)和circle(圆形)的面积公式不一样。因此可以在object类中声明一个纯虚函数calarea(),object就成了抽象类
如果出现object aob,bob;这样的声明,编译时会报错,因为抽象类不能生成实例。
继承类rect中的double calarea()可以定义成{return (a*b)*h/2.0;}
继承类circle中的double calarea()可以定义成{return 3.14*a*a;}
加入还有一个object的派生类triangle(三角形)的话,double calarea()可以定义成{return a*b/2.0;}
我要举报
大家都在看
推荐资讯