首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC++6.0打开考生文件夹下的源程序文件3.cpp,要求编写一个CMyShape类,含有求面积、周长等的纯虚函数,然后编写一个CRectangle类和CCircle类继承CMyShape,并实现求面积、周长的两个函数。在main函数中测试得到下面的结
使用VC++6.0打开考生文件夹下的源程序文件3.cpp,要求编写一个CMyShape类,含有求面积、周长等的纯虚函数,然后编写一个CRectangle类和CCircle类继承CMyShape,并实现求面积、周长的两个函数。在main函数中测试得到下面的结
admin
2019-06-07
71
问题
使用VC++6.0打开考生文件夹下的源程序文件3.cpp,要求编写一个CMyShape类,含有求面积、周长等的纯虚函数,然后编写一个CRectangle类和CCircle类继承CMyShape,并实现求面积、周长的两个函数。在main函数中测试得到下面的结果:
在CMyShape类构函数造内
在CCircle类构造函数内
在CMyShape类构造函数内
在CRectangle类构造函数内
myCircle:Area=314.159 Girth=62.8319
myRectangle:Area=900 Girth=120
具体要求如下:
(1)定义求面积的纯虚函数,请在注释1后添加适当的语句。
(2)定义求周长的纯虚函数,请在注释2后添加适当的语句。
(3)请在注释3和注释4后添加适当的语句。
注意:除在指定位置添加语句之外,不要改动程序中的其他内容。
试题程序:
#include
#include
#define PI 3.1415926
class CMyPoint
{
public:
int x,y;
CMyPoint(int tx,int ty):x(tx),y(ty){}
};
class CMyShape
{
public:
CMyShape(){cout<<"在CMyShape类构造函数内"
<
//********1********
//********2********
protected:
};
class CCircle:public CMyShape
{
public:
CCircle(CMyPoint i,double j):CMyShape(),arcCenter
(i),radius(j)
{
cout<<"在CCircle类构造函数内"<
}
double GetArea()
{
return PI*radius*radius:
}
double GetGirth()
{
return 2*PI*radius:
}
private:
CMyPoint arcCenter;
double radius;
};
class CRectangle:public CMyShape
{
public:
CRectangle(CMyPoint h,CMyPoint rb):leftTop(It),
rightBottom(rb),CMyShape()
{
cout<<"在CRectangle类构造函数内"<
}
double GetArea()
{
int width=abs(rightBottom.x-leftTop.x);
int height=abs(rightBottom.y-leftTop.y);
return width*height;
}
double GetGirth()
{
int width=abs(rightBottom.x-leftTop.x);
int height=abs(rightBottom.y-leftTop.y);
return 2*(width+height):
}
private:
CMyPoint leftTop,rightBottom;
};
void main()
{
CMyShape*myShape=NULL;
CCircle*myCircle=new CCircle(CMyPoint(5,5),10):
CRectangle*myRectangle=new CRectangle r CMy
Point(0,0),CMyPoint(30,30));
//********2********
cout<<"myCircle:"<<"Area="<
//********2********
cout<<"myReetangle:"<
GetArea()<<"\t”<<"Girth="<
GetGirth
()<
}
选项
答案
(1)应添加“virtual double GetArea()=0;”。 (2)应添加“virtual double GetGirth()=0;”。 (3)应添加“myShape=myCircle;”。 (4)应添加“myShape=myRectangle;”。
解析
本题在第1处声明纯虚函数,纯虚函数的定义格式为“virtual<函数类型><函数名>(<参数表>)=0”,由程序后面的函数体实现可知求面积纯虚函数的函数名称为GetArea,因此第1处应添加“virtual double GetArea()=0;”。声明格式和1)相同,由求周长的函数具体实现可知该函数的名称为GetGirth,因此第2处应添加“virtual double GetGirth()=0;”。
主函数中定义了CMyShaPe类对象指针myShape,CCircle类对象指针myCircle,CRectangle类对象指针myRectangle。由类继承关系知,在调用子类的构造函数时,编译器会自动调用父类的默认构造函数来初始化父类,因此在实例化类CRectangle和类CCircle的实例时,抽象父类CMyShape的默认构造函数会先被调用,因此在屏幕上先输出“在CMyShape类构造函数内”,然后输出“在CCircle类构造函数内”,实例化CRectangle对象的过程也是如此。同时由纯虚函数的性质知.抽象基类不需要实现纯虚函数,它的实现是在子类中完成的,但通过周子类实例隐式转换成基类实例,可以使得基类实例具有子类实例的特性,因此可以访问子类的成员函数,myShape是基类指针,其虚函数GetArea和GetGirth没有实现,要求程序输出的面积值和周长值,只可能是myShape指向子类对象,调用子类的函数GetArea和GetGirth打印输出,显然在第3处是myShape指向子类CCirele对象,即“myShape=myCircle;”。同理第4处myShape指向子类CRectangle对象,即第4处应添加“myShape=myRectangle;”。
转载请注明原文地址:https://kaotiyun.com/show/fm8p777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
结构化程序所要求的基本结构不包括()。A)顺序结构B)GOTO跳转C)选择(分支)结构D)重复(循环)结构
下列程序运行时的输出结果是______。#include<iostream>usingnamespacestd;voidXfun(int&,int&);intmain(){inta=3,b=4;
请将下列类定义补充完整,横线处应填加语句__________。classTestClass{public:voidfun(){cout
下列有关函数重载的叙述中,错误的是()。
下列程序的输出结果是()。#includeusingnarnespacestd;templateTfun(Ta,Tb){return(a
有下列二叉树,对此二又树前序遍历的结果为()。
从程序设计的方法和技术的发展角度来说,程序设计主要经历了结构化设计和__________的程序设计阶段。
下列工具中为需求分析常用工具的是()。
下列工具中,不属于结构化分析的常用工具的是()。
下列选项中不属于软件生命周期开发阶段任务的是()。
随机试题
侣鱼虾而友麇鹿。侣鱼虾:友麇鹿:
A.肺部局限性哮鸣音,对β2受体激动剂疗效不佳B.两肺满布哮鸣音,对β2受体激动剂疗效较好C.两肺哮鸣音与湿啰音并存,对抗生素反应较好D.两肺哮鸣音伴湿啰音,忌用肾上腺素类药物E.两肺散在干啰音,伴呼吸音减弱原发性支气管肺癌的临床特点是
血管闭塞性脉管炎好发于
下列案件中人民法院可以适用先予执行的是()。
黄土地区的铁路隧道曲墙衬砌的边墙矢高不应小于弦长的()。
对于可疑类贷款,贷款的损失比率基本只与相关资产的变现价值与变现成本有关。()
下述做法中,符合我国《娱乐场所管理条例》规定的是()
某交警按规范程序对涉嫌交通违法的瞿某处理时,遭到瞿某言语威胁,该交警在完成相应告知后说道:“如果怕你威胁,我就不戴帽子了。”瞿某用手机录下现场视频并传到网上,引发网友热议。网友把该交警的执法行为称为“李云龙执法”。对该交警的行为,以下看法正确的是:
Jerrysawhisdoglimpingonabloodylegandjumpeduptheconclusionthatithadbeenshot.
A、Theyaremorehealth-conscious.B、Theyarechangingtheirlivinghabits.C、Theygetlessandlesssleep.D、Theyknowthedange
最新回复
(
0
)