首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC++6.0打开考生文件夹下的源程序文件3.cpp,要求编写一个CMyShape类,含有求面积、周长等的纯虚函数,然后编写一个CRectangle类和CCircle类继承CMyShape,并实现求面积、周长的两个函数。在main函数中测试得到下面的结
使用VC++6.0打开考生文件夹下的源程序文件3.cpp,要求编写一个CMyShape类,含有求面积、周长等的纯虚函数,然后编写一个CRectangle类和CCircle类继承CMyShape,并实现求面积、周长的两个函数。在main函数中测试得到下面的结
admin
2019-06-07
36
问题
使用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全国计算机二级
相关试题推荐
实体完整性约束要求关系数据库中元组的______属性值不能为空。
有如下类定义:classB{public:voidfun1(){}private:voidfun2(){}protected:voidfun3(){}};classD:publicB{
在对函数进行原型声明时,下列语法成分中,不需要的是()。A)函数返回类型B)函数参数列表C)函数名D)函数体
有以下程序:#includeusingnamespacestd;classR{public:R(intr1,intr2){R1=r1l;
下面程序的输出结果是()。#include#inc!udeusingnamespacestd;classpoint{private:doubl
下列关于抽象类的表述中正确的是()。
已知递归函数fun的定义如下:inifun(intn){if(n
以下描述中,不是线性表顺序存储结构特征的是()。
下面表示引用的方法中正确的是()。已知:intn=10;
树是结点的集合,它的根结点的数目是()。
随机试题
PlayingorganizedsportsissuchacommonexperienceintheUnitedStatesthatmanychildrenandteenagerstakethemforgranted
左肾上盏多发结石并明显扩张,最好的治疗方法是______。
在ICD-10的类目中,没有使用的字母是
根据企业破产法律制度的规定,下列选项中属于债权人会议职权的有()。
下列选项中,中国古代发明的仪器与用途对应不正确的是()。
一个等腰三角形,一边长是30厘米,另一边长是65厘米,则这个三角形的周长是()。
在全国筹划纪念灾难发生两周年期间,日本气象厅也公布了最新的海啸预警系统,该系统可以避免两年前低估灾情的状况再次发生。据悉。新系统提高了预警速度和准确性。日本全国80个地点正在装置这种系统。日本的地震站也在不断扩充。从两年前的221个已经发展到261个,遍布
设A是4×5矩阵,且A的行向量组线性无关,现有下列4个命题:①线性方程组Ax=b有无穷多个解;②线性方程组Ax=b有唯一解;③线性方程组Ax=b的增广矩阵(A,b)的行向量组线性无关;④增广矩阵(A,b)必有4个列向量线性无关.以上命题正确的个数
A、 B、 C、 D、 A
某公司通过电台及报纸两种方式做销售某种商品的广告,根据统计资料,销售收入R(万元)与电台广告费用x1(万元)及报纸广告费用x2(万元)之间的关系有如下经验方式:R=15+4x1+32x2-8x1x2-2x12-10x22在广告费用不限的情况下,力求
最新回复
(
0
)