首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC6打开考生文件夹下的源程序文件modi3.cpp,要求编写一个CMyShape类,含有求面积求周长等纯虚函数。然后编写一个CMyRectangle类和CMyCirele类继承CMyShape,并实现求面积、求周长的两个函数。在mainC函数中测试得
使用VC6打开考生文件夹下的源程序文件modi3.cpp,要求编写一个CMyShape类,含有求面积求周长等纯虚函数。然后编写一个CMyRectangle类和CMyCirele类继承CMyShape,并实现求面积、求周长的两个函数。在mainC函数中测试得
admin
2015-07-20
67
问题
使用VC6打开考生文件夹下的源程序文件modi3.cpp,要求编写一个CMyShape类,含有求面积求周长等纯虚函数。然后编写一个CMyRectangle类和CMyCirele类继承CMyShape,并实现求面积、求周长的两个函数。在mainC函数中测试得到下面的结果:
在CMyShape类构函数造内
在CMyCircle类构造函数内
在CMyShape类构造函数内
在CMyRectangle类构造函数内
myCircle:Area=314.159 Girth=62.8319
myRectangle:Area=900 Ginh=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 CMyCircle:public CmyShape
{
public:
CMyCircle(CMyPoint i,double
J):CMyShape(),arcCenter(i),
radius(j){
cout<
}
double GetArea()
{
return PI*radius*radius,
}
double GetGirth()
{
return 2*PI*radiUS,
}
private:
CMyPoint arcCenter;
double radius ;
};
class CMyRectangle:public
CmyShape
{
public:
CMyRectangle(CMyPoint
it,CMyPoint rb):leftTop(It),
rightBottom(rb),CMyShape(){
cout<<“在 cMyRectangle
类构造函数内”<
}
Double GetArea()
{
int width=abs
(rightBot Lom.x—leftTop.x);
int height=abs
(rightBottom.y—leftTop.y);
Return width*height ;
}
double GetGirth()
{
int wi dth=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=new
CMyCircle(CMyPoint(5,5),10);
CMyRectangle*myRectangle=new CMyRectangle(CMyPoint(0,0),
CMyPoint(30,30));
∥********3********
cout<<”myCircle:”<<”Area=”
<
GetArea()<<“\t”
<<”Girth=”<
GetGirth()<
∥********4********
cout<<“myRectangle:”<<“Are、a=”<
GetArea()<<“\t”
<<“Girth=”<
GetGirth()<
}
选项
答案
(1)添加语句:virtual double GetArea()=0; (2)添加语句:virtual double GetGirth()=0; (3)添加语句:myShape=myCircle; (4)添加语句:myShape=myRectangie;
解析
(1)第1个标识下声明纯虚函数,纯虚函数的定义格式为:vimml<函数类型><函数名>(<参数表>)=0,由程序后面的函数体实现可知求面积纯虚函数的函数名为GetArea0,因此第1个标识下应添加“virtual doubleGetArea0=0;”。
(2)声明格式和(1)相同,由求周长的函数具体实现可知该函数的名为GetGirth(),因此第2个标识下应添加“virtual double GetGirth0=0;”
(3)主函数中定义了CMyShape类对象指针myShape,CMyCircle类对象指针myCircle,CMyRectangle类对象指针myRectangle,由类继承关系知,在调用子类的构造函数的时候,编译器会自动调用父类的默认构造函数来初始化父类,因此在实例化类CMyRectangle和类CMyCircle的实例的时候,抽象父类CMyShape的默认构造函数会先被调用,因此在屏幕上先输出“在CMyShape类构函数造内”,然后输出“在CMyCircle类构造函内”,实例化CMyRectangle对象的过程也是如此。同时由纯虚函数的性质知,抽象基类不需要实现纯虚函数,它的实现是在子类中完成的,但是通过用子类实例隐式转换成基类实例,可以使得基类实例具有子类实例的特性,因此可以访问子类的成员函数,myShape是基类指针,其虚函数GetArea0和GetGirth0没有实现,要求程序输出面积值和周长值,只可能是myShape指向子类对象,调用子类的函数GetAreaO和OetOirth0打印输出,显然第3个标识下是myShape指向子类CMyCircle对象,即myShape--myCircle;。
(4)同理第4个标识下myShape指向子类CMyRectangle对象,即第4个标识下应添加“myShape=myRectangle;”。
转载请注明原文地址:https://kaotiyun.com/show/dCNp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
以下程序执行后的输出结果是()。#include<iostream>usingnamespacestd;voidtry(int,int,int,int);intmain(){intx,y,z
下面关于虚函数的描述中正确的是()。
程序中有如下语句for(inti=0;i<5;i++)cout<<*(p+i)<<",";能够依次输出int型一维数组DATA的前5个元素。由此可知,变量p的定义及初始化语句是【】。
【】是一种信息隐蔽技术,目的在于将对象的使用者和对象的设计者分开。
汇编程序的功能是将汇编语言所编写的源程序翻译成由【】组成的目标程序。
有以下程序#include<iostream.h>intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}voidmain(){inti,j=0;for(i=1;i<3;i++)j+=f(
已知在函数func()中语句this->ff=0;与语句ff=0;的效果完全相同。对于这一现象,下列表述中错误的是()。
在下面的类定义中,横线处应填入的内容是()。classFred{public:voidprint(){cout<<data<<end1;voidsetData(doubled)(data=d;static
若语句:cout<<seffill(’>’)<<setw(5)<<3141512<<sctw(5)<<"OK!";是程序中第1个输出语句,则输出结果是()。
一个()允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返回值能取任意类型。
随机试题
患者男,57岁,喉癌。2周前行全喉切除术,现情况稳定,康复介入。对患者进行最简便可行的言语康复治疗为
根据《工程建设项目施工招标投标办法》(国家七部委局第30号令),招标人可以对潜在投标人或者投标人进行资格审查,资格审查分为()。
证券监管部门对一般证券从业人员的管理,授权给()管理。
高语境传播指的是在传播时。绝大部分信息或存于物质语境中,或内化在个人身上,极少存在于编码清晰的被传递的讯息中,即通过语言或动作来表达的成分较少;低语境传播正好相反,即将大量的信息置于清晰的编码中。根据上述定义。下列属于高语境传播的一项是()。
演示法是教师在上课时,配合讲授或谈话,把实物或教具展示给学生看,或向学生做示范性的实验,来说明或印证所传授的知识。运用演示法的基本要求有()。(2014.山西)
去年,有6000人死于醉酒,有4000人死于开车,但只有500人死于醉酒开车。因此。醉酒开车比单纯的醉酒或者单纯的开车更安全。如果以下哪项陈述为真,将最有力地削弱上述论证?
教育行政执法原则包括()。
某乒乓球比赛共有6支队伍参加,采用单循环赛模式,胜一局得3分,负一局得-1分,平一局得1分,最终决出前3名,已知某组最终得分是5分,排名第三,问第一名的队伍最多输了多少局比赛?()
下列叙述中正确的是()。
Amylikesmenwho______.
最新回复
(
0
)