首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC++6.0打开考生文件夹下的源程序文件3.cpp,要求编写一个CMyShape类,含有求面积、周长等的纯虚函数,然后编写一个CRectangle类和CCircle类继承CMyShape,并实现求面积、周长的两个函数。在main函数中测试得到下面的结
使用VC++6.0打开考生文件夹下的源程序文件3.cpp,要求编写一个CMyShape类,含有求面积、周长等的纯虚函数,然后编写一个CRectangle类和CCircle类继承CMyShape,并实现求面积、周长的两个函数。在main函数中测试得到下面的结
admin
2019-06-07
27
问题
使用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://jikaoti.com/ti/hgA0FFFM
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
有如下语句序列:intx=-10;while(++x){}运行时while循环体的执行次数为______。
在进行关系数据库的逻辑设计时,E-R图中的属性常被转换为关系中的属性,联系通常被转换为______。
下面有关for循环的正确描述是
表达式c3=c1.operator+(c2)或c3=operator+(c1,c2)还可以表示为__________。
设有以下定义和程序:#includeclassA1{public:voidshow1(){cout
如果表达式x=y*z中的*是作为成员函数重载的运算符,采用运算符函数调用格式,该表达式还可以表示为__________。
下列叙述中正确的是()。
软件测试分为白箱(盒)测试和黑箱(盒)测试。等价类划分法属于__________测试。
自然连接(Naturaljoin)是一种特殊的等值连接,下列哪个(些)是它满足下面的条件()。I、两关系间有公共域Ⅱ、通过公共域的等值进行连接Ⅲ、可进行逆运算
非成员函数必须声明为类的__________才能访问这个类的private成员。
随机试题
法国最高行政法院最主要的职权是()
2型糖尿病患者胰岛素的分泌方式为
【背景资料】某省重点水利工程项目计划于2009年12月开工,由于工程复杂,技术难度大,一般施工队伍难以胜任,业主自行决定采取邀请招标方式。于2009年9月8日向通过资格预审的A、B、C、D、E五家施工企业发出投标邀请书。该五家施工企业均接受了邀请
首次公开发行股票,发行人应按第9号准则的要求制作和报送申请文件。未按第9号准则的要求制作和报送申请文件的,中国证监会按照有关规定不予受理。()
某投资方案的现值指数小于1,说明()。
某企业运用提前期法来确定各车间的生产任务,12月份装配车间(最后车间)应该生产到500号,产品的平均日产量为10台。该产品在机械加工车间的出产提前期为40天,生产周期为50天。根据以上资料,回答下列问题:提前期法适合()类
某企业按照政府统一会计政策计算出年度利润总额300万元,当年发生的公益捐赠共60万元,包括直接给受灾灾民发放慰问金10万元,通过市级政府机关对受灾地区捐赠50万元,其当年可以扣除的公益捐赠支出额是()万元。
彼得原理:是美国学者劳伦斯.彼得在对组织中人员晋升的相关现象研究后得出的一个结论,即在各种组织中,由于习惯于对在某个等级上称职的人员进行晋升提拔,因而雇员总是趋向于晋升到其不称职的地位。彼得原理有时也被称为“向上爬”原理。下列现象中符合彼得原理的是()
F公司有一投资方案,具体资料如下:该公司打算购入一台设备,价款为1500万元,预计使用3年,直线法折旧,预计期末无残值,会计处理与税法规定一致。设备投产后预计未来3年的销售收入分别为1200万元、2000万元和1500万元;付现成本(不含利息)分别为400
下列关于《中华民国临时政府组织大纲》内容的表述,正确的有()。(2009年多选62)
最新回复
(
0
)