首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC++6.0打开考生文件夹下的源程序文件3.cpp,要求编写一个CMyShape类,含有求面积、周长等的纯虚函数,然后编写一个CRectangle类和CCircle类继承CMyShape,并实现求面积、周长的两个函数。在main函数中测试得到下面的结
使用VC++6.0打开考生文件夹下的源程序文件3.cpp,要求编写一个CMyShape类,含有求面积、周长等的纯虚函数,然后编写一个CRectangle类和CCircle类继承CMyShape,并实现求面积、周长的两个函数。在main函数中测试得到下面的结
admin
2019-06-07
74
问题
使用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全国计算机二级
相关试题推荐
若有定义语句“intx=10,y=20z=20;”,则表达式x>z&&y=z的值为______。
负责数据库中查询操作的数据库语言是()。A)数据定义语言B)数据管理语言C)数据操纵语言D)数据控制语言
数据流的类型有__________和事务型。
数据字典是数据库设计需求分析阶段的重要工具之一,其最基本的方法是()。
对基类数据成员的初始化必须在派生类的构造函数中的__________处执行。
数据管理技术的发展经历了人工管理、文件系统和数据库系统3个阶段,其中数据独立性最高的是__________。
下面关于派生类的描述中错误的是()。
下面表示引用的方法中正确的是()。已知:intn=10;
给定一个关键字序列(24,19,32,43,38,6,13,22),进行快速排序,扫描一趟后的结果是_____________。
在E-R图中,用来表示实体之间联系的图形是
随机试题
(2007年4月)朱兰在质量管理方面的贡献主要表现在哪些方面?
艺术技巧的操作在质料上留下的痕迹就是________。
手术后肺不张的防治,哪项是错误的
A.乙琥胺B.苯妥英钠C.卡马西平D.丙戊酸钠E.硫酸镁
下列哪项是阳虚证的典型表现
A、丙谷胺B、前列腺素E2的衍生物C、奥美拉唑(omeprazole)D、派吡氮平E、多潘立酮酸泵抑制剂
企业未取得安全生产许可证的,不得从事________。
A安装公司承包某分布式能源中心的机电安装工程,工程内容有:冷水机组、燃气锅炉、配电柜、水泵等设备的安装和冷热水管道、电缆排管及电缆施工。分布式能源中心的冷水机组、燃气锅炉、配电柜、水泵等设备由业主采购,金属管道、电力电缆及各种材料由安装公司采购。A安装公
只要有好的生源或一流的师资队伍,否则不能够在考试中取得好成绩。只有改善教学条件,才能确保好的生源和一流的师资队伍。光明中学去年没有在考试中取得好成绩。如果上述断定是真的,则以下哪项也可能为真?Ⅰ.光明中学去年没有好的生源或一流的师资队伍。
AlthoughCoca-ColaCo:spentnearly$2billionlastyearadvertisingitsvariousbrandsaroundtheglobe,itsawitsshareoft
最新回复
(
0
)