首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC6打开考生文件夹下的源程序文件modi3.cpp,要求编写一个CMyShape类,含有求面积求周长等纯虚函数。然后编写一个CMyRectangle类和CMyCircle类继承CMyShape,并实现求面积、求周长的两个函数。在main()函数中测试
使用VC6打开考生文件夹下的源程序文件modi3.cpp,要求编写一个CMyShape类,含有求面积求周长等纯虚函数。然后编写一个CMyRectangle类和CMyCircle类继承CMyShape,并实现求面积、求周长的两个函数。在main()函数中测试
admin
2016-10-28
39
问题
使用VC6打开考生文件夹下的源程序文件modi3.cpp,要求编写一个CMyShape类,含有求面积求周长等纯虚函数。然后编写一个CMyRectangle类和CMyCircle类继承CMyShape,并实现求面积、求周长的两个函数。在main()函数中测试得到下面的结果:
在CMyShape类构函数造内
在CMyCircle类构造函数内
在CMyShape类构造函数内
在CMyRectangle类构造函数内
myCircle:Area=314.159 Girth=62.8319
myRectangle:Area=900 Girth=120
具体要求如下:
(1)定义求面积纯虚函数,请在注释//********1********之处添加适当的语句。
(2)定义求周长纯虚函数,请在注释//********2********之处添加适当的语句。
(3)请在注释//********3********和//********4********之处添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
#include<iostream.h>
#include<math.h>
#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类构造函数内"<<endl;}
//********1********
//********2********
protected:
};
class CMyCircle:public CmyShape
{
public:
CMyCircle(CMyPoint i,double j):CMyShape(),arcCenter(i),
radius(j){
cout<<"在CMyCircle类构造函数内"<<endl;
}
double GetArea()
{
return PI*radius*radius;
}
double GetGirth()
{
return 2*PI*radius;
}
private:
CMyPoint arcCenter;
double radius;
};
class CMyRectangle:public CmyShape
{
public:
CMyRectangle(CMyPointlt,CMyPoint rb):letdTop(it),rightBottom(rb),CMyShape()(
cout<<"在CMyRectangle类构造函数内"<<endl;
}
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;
CMyCircle *myCircle=newCMyCircle(CMyPoint(5,5),10);
CMyRectangld *myRectangle=new CMyRectangle(CMyPoint(0,0),
CMyPoint(30,30));
//********3********
cout<<"myCircle:"<<"Area="<<myShape->GetArea()<<"\t"
<<"Girth="<<myShape->GetGirth()<<endl;
//********4********
cout<<"myRectangle:"<<"Are a="<<myShape->GetArea()<<"\t"
<<"Girth="<<myShape->GetGirth()<<endl;
}
选项
答案
(1)添加语句:virtual double GetArea()=0; (2)添加语句:virtual doubie GetGirth()=0; (3)添加语句:myShape=myCircle; (4)添加语句:myShape=myRectangle;
解析
(1)第1个标识下声明纯虚函数,纯虚函数的定义格式为:virtual<函数类型><函数名>(<参数表>)=0,由程序后面的函数体实现可知求面积纯虚函数的函数名为GetArea(),因此第1个标识下应添加“virtual double GetArea()=0;”。
(2)声明格式和(1)相同,由求周长的函数具体实现可知该函数的名为GetGirth0,因此第2个标识下应添加“virtualdoubleGetGirth0=0;”
(3)主函数中定义了CMyShape类对象指针myShape,CMyCircle类对象指针myCircle,CMyRectangle类对象指针myRectangle,由类继承关系知,在调用子类的构造函数的时候,编译器会自动调用父类的默认构造函数来初始化父类,因此在实例化类CMyRectangle和类CMyCircle的实例的时候,抽象父类CMyShape的默认构造函数会先被调用,因此在屏幕上先输出“在CMyShape类构函数造内”,然后输出“在CMyCircle类构造函数内”,实例化CMyRectangle对象的过程也是如此。同时由纯虚函数的性质知,抽象基类不需要实现纯虚函数,它的实现是在子类中完成的,但是通过用子类实例隐式转换成基类实例,可以使得基类实例具有子类实例的特性,因此可以访问子类的成员函数,myShape是基类指针,其虚函数GetArea()和GetGirth()没有实现,要求程序输出面积值和周长值,只可能是myShape指向子类对象,调用子类的函数GetArea()和GetGirth()打印输出,显然第3个标识下是myShape指向子类CMyCircle对象,即myShape=myCircle;。
(4)同理第4个标识下myShape指向子类CMyRectangle对象,即第4个标识下应添加“myShape=myRectangle;”。
转载请注明原文地址:https://kaotiyun.com/show/H7Np777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回,请填空。intmystrlen(char*str){inti;for(i=0;______!=’\0’;i++);
模块的独立性一般用两个准则来度量,即模块间的【】和模块的内聚性。
有以下程序#include<iostream>usingnamespacestd;staticintdays[]={31,28,31,30,31,30,3l,31,30,31,30,31};classdate
类的析构函数的作用是
通过使用new和delete两个运算符进行的分配为【】存储分配。
下列关于模板的说法正确的是
operator是运算符重载时必须使用的关键字,它和被重载的运算符连在一起,作为运算符函数的专用函数名,务必把该函数说明为【】的。
下面是复数类complex的定义,其中作为友元函数重载的运算符“--”的功能是将参数对象的实部减1,然后返回对该对象的引用;请补充完整。classcomplex{private:intreal;iht
软件工程的框架可概括为:目标、过程和【 】。
如果有以下定义及初始化:inta=3,*p=&a;则由此可以推断,*p的值是()。
随机试题
最可能的诊断是有助于诊断的实验室检查是
土地利用现状与结构合理性分析的主要内容不包括()。
某铁路桥梁工程构造如下:桥墩基础采用直径为1.5m,桩长25~30m的钻孔桩,低桩承台;桥梁下部结构为一般墩台。地质条件如下:原地面往下依次为黏土、砂性土。其中靠岸桥墩桩基中有6个桩孔没有地下水。施工前和施工过程中存在以下情况:1.承包人配置的桩
南京科越纸业有限公司属于合资企业,专营纸张生产加工。该公司2003年6月与香港龙胜贸易公司签约,购买一台CIF18000美元,在总投资额度内的切纸机,该设备属于《外商投资产业目录》中鼓励进口项目,该设备于2003年10月19日由中远运输公司的“DAQING
特急秘密××局办公室文件×发(13)第023号请求同意增加人员编制的报告编制办:随着改革开放形势的发展,我局事业蒸蒸日上,人手不足问题日益严重,机关每个工作人员每天都处在十分紧张、经常加班加点的状态下,身心疲备严重影响工作效
一学校的750名学生或上历史课、或上算术课,或者两门课都上。如果有489名学生上历史课,606名学生上算术课,问有多少学生两门课都上?
培训部会计师魏女士正在准备有关高新技术企业科技政策的培训课件,相关资料存放在Word文档“PPT素材.docx”中。按下列要求帮助魏女士完成PPT课件的整合制作:创建一个名为“PPT.pptx”的新演示文稿,该演示文稿需要包含Word文档“PPT素材.
YouwillhearatalkbyProfWilson,ahealthexpert,ontheimportanceoffiberinourdailydiet.Asyoulisten,answerQuesti
Throughoutthehistoryofthearts,thenatureofcreativityhasremainedconstanttoartists.Nomatterwhatobjectstheyselec
WithinEUprimaryeducation,aclearmajorityofpupilschoosetostudyEnglishlikeaforeignlanguage.Indeed,learningEnglis
最新回复
(
0
)