中易网

C++题目 抽象类

答案:2  悬赏:40  
解决时间 2021-02-18 02:00
生成一个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()< }
}
最佳答案
妈。的,找人做作业的。
全部回答
抽象类的意思就是类有个成员函数中有至少一个纯虚函数,按照你题意里面的那个函数的话就是声明成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;}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
请问去医院报医疗费需要带什么。礼拜天可以吗
朋友送块表给我,上面编号是L2.669.4ALLSTAIN
吴记正宗逍遥镇胡辣汤地址在哪,我要去那里办
我的高中毕业证丢了现在学校也没有了怎么办
城西小学(宁德福鼎)地址在哪,我要去那里办事
自考律师要什么学历
你也是!!! 那三个感叹号代表什麼意思
离婚后孩子随母亲,孩子能随母亲姓吗?扶养费
新芳台球室在什么地方啊,我要过去处理事情
我是网管 想在游戏菜单加新网游 该怎么做?
补办护照护照号会变吗 补办护照需要重新照相
东公忽洞沟怎么去啊,有知道地址的么
如图,在四边形ABCD中,AB‖BC,∠C=90°,BC=
张杰成都演唱会门票哪里有卖
CSS中导航栏居中问题
推荐资讯
爵士舞舞好还是中国古典舞好
猫不听话怎么办
当代中国教育取得了哪些成就?面临哪些问题
屋里的尿骚味怎么去除
我是学校国旗班的,请问夏天升国旗可以只穿短
w=FL中的L是指什么
银川恒大名都坐车去机场坐哪路公交
龙亭北路/文昌后街(路口)地址在什么地方,想
重启路由器会不会对网速有影响,今天重启了路
win10 cs1.6怎么全屏
宏碁笔记本aspireE15,Windows7指示灯一直亮
Firefox 不知道如何打开此地址,因为协议 (ms
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?