首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC6打开考生文件夹下的源程序文件modi3.cpp,要求编写一个CMyShape类,含有求面积求周长等纯虚函数。然后编写一个CMyRectangle类和CMyCircle类继承CMyShape,并实现求面积、求周长的两个函数。在main()函数中测试
使用VC6打开考生文件夹下的源程序文件modi3.cpp,要求编写一个CMyShape类,含有求面积求周长等纯虚函数。然后编写一个CMyRectangle类和CMyCircle类继承CMyShape,并实现求面积、求周长的两个函数。在main()函数中测试
admin
2020-05-14
88
问题
使用VC6打开考生文件夹下的源程序文件modi3.cpp,要求编写一个CMyShape类,含有求面积求周长等纯虚函数。然后编写一个CMyRectangle类和CMyCircle类继承CMyShape,并实现求面积、求周长的两个函数。在main()函数中测试得到下面的结果:
在CMyShape类构函数造内
在CMyCircle类构造函数内
在CMyShape类构造函数内
在CMyRectangle类构造函数内
myCircle:Area=314.159 Girth=62.8319
myRectangle:Area=900 Ginh=120
具体要求如下:
(1)定义求面积纯虚函数,请在注释//********1********之处添加适当的语句。
(2)定义求周长纯虚函数,请在注释//********2********之处添加适当的语句。
(3)请在注释//********3********和//********4********之处添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
1 #include
2 #include
3 #define PI 3.1415926
4 class CMyPoint
5 {
6 public:
7 int x,y;
8 CMyPoint(int tx,int ty):
x(tx),y(ty){}
9 };
10 class CMyShape
11 {
12 public:
13 CMyShape(){cout<<"在
CMyShape类构造函数内"<
14 //********1********
15
16 //********2********
17
18 protected:
19 };
20 class CMyCircle:public CmyShape
21 {
22 public:
23 CMyCircle(CMyPoint i,double
j):CMyShape(),arcCenter(i),
radius(J){
24 cout<<"在CMyCircle类构
造函数内"<
25 }
26 double GetArea()
27 (
28 return PI*radius*radius ;
29 )
30 double GetGirth()
31 {
32 return 2*PI*radius ;
33 }
34 private:
35 CMyPoint arcCenter ;
36 double radius ;
37 };
38 class CMyRectangle:public
CmyShape
39 {
40 public:
41 CMyRectangle(CMyPoint
it,CMyPoint rb):leftTop(it),
rightBottom(rb),CMyShape(){
42 cout<<"在 cMyRectangle
类构造函数内"<
43 }
44 Double GetArea()
45 {
46 int width=abs
(rightBott0m.x0leftTop.X);
47 int height=abs
(rightBottom.y-leftTop.Y);
48 Return width*height;
49 }
50 double GetGirth()
51 {
52 int width=abs
(rightBottom.x-leftTop.X);
53 int heigh七=abs
(rightBottom.y-leftTop.y);
54 return 2*(width+height);
55 }
56 private:
57 CMyPoint leftTop,rightBottom;
58 };
59 void main()
60 {
61 CMyShape *myShape=NULL ;
62 CMyCircle *myCircle=new
CMyCircle(CMyPoint(5,5),10);
63 CMyRectangle*myRectangle=
new CMyRectangle(CMyPoint(0,0),
CMyPoint(30,30));
64 //********3********
65
66 cout<<"myCircle:"<<"Area="
<
GetArea()<<"\t"
67 <<"Girth="<
GetGirth()<
68 //********4********
69
70 cout<<"myRectangle:"<<"Are
a="<
GetArea()<<"\t"
71 <<"Girth="<
GetGirth()<
72 }
选项
答案
(1)添加语句:virtual doubie GetArea()=0; (2)添加语句:virtual double GetGirth()=0; (3)添加语句:myShape:myCircle ; (4)添加语句:myShape:myRectangle;
解析
类CMyPoint含有成员变量X和Y,抽象基类CMyShape含有两个虚函数GetArea()和GetGirth(),分别用来求图形的面积和周长。类CMyRectangle和类CMyCircle派生于类CMyShape,并都实现了抽象父类的纯虚函数,通过这两个函数可分别求得矩形的面积和周长以及圆的面积和周长。
[解题思路]
(1)第1个标识下声明纯虚函数,纯虚函数的定义格式为:virtual<函数类型><函数名>(<参数表>):0,由程序后面的函数体实现可知求面积纯虚函数的函数名为GetArea0,因此第1个标识下应添加“virtual double GetArea0=0;”。
(2)声明格式和(1)相同,由求周长的函数具体实现可知该函数的名为GetGirth(),因此第2个标识下应添加“virtual double OetGirth()=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/RM8p777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
public运算符可以重载为成员函数或友元函数,但是应该把函数说明为公有的,以便各个量都能引用。
若运行时给变量x输入12,则以下程序的运行结果是#include<iostream.h>voidmain(){intx,y;cin>>x;y=
如果表达式--x中的“--”是重载的类运算符,采用运算符函数调用格式,该表达式还可以表示为【】。
下面程序的输出结果是#include<iostream.h>classexample{inta;public:example(intb){a=b++;}voidpnnt(
将一个函数声明为一个类的友元函数必须使用关键字【】。
软件开发软件生命周期分为三个时期共八个阶段:软件定义期(问题定义、可行性研究和需求分析阶段)、软件开发期(系统设计、详细设计、编码和测试阶段)、软件维护期(即运行维护阶段)。
不合法的main函数命令行参数表示形式是()。
以下不使用线性结构表示实体之间联系的模型的是()。
某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是( )。
使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能为:从键盘输入一个字符串,并将结果保存到文件modi1.txt中。注意:不要改动main函数,不能增行或删行,也不能更改程序的结
随机试题
在高速公路上除遇障碍、发生故障等必须停车外,不准停车上下人员或者装卸货物。
我国卫生部1988年颁布的医德规范的七条内容中,不直接涉及医患关系的是
A.风B.寒C.暑D.燥E.火具有明显季节性的邪气是
患者,男性,70岁。测口温时不慎将体温计咬碎,护士应立即采取的措施为
平车上下坡时,患者头在高处一端,目的是()
G发电厂有2×1000MW机组,厂房占地面积为100×300m2,燃煤由码头卸下后,经皮带引桥由带式输送机输送到储煤场,再经带式输送机送到磨粉机磨成煤粉,煤粉送至锅炉喷燃器,由喷燃器喷到炉膛内,煤粉燃烧后的烟气经除尘系统进入脱硫脱硝系统。脱硫脱硝工艺需用
基层必须具有足够的刚度、压实度和稳定性,厚度不得小于()cm。
某工程合同价为500万元,合同价的60%为可调部分。可调部分中,人工费占35%,材料费占55%,其余占10%。结算时,人工费价格指数增长了10%,材料费价格指数增长了20%,其余未发生变化。按按照国家发改委、财政部、建设部等九部委第56号令发布的标准施工招
一般来说,大班幼儿所处的游戏水平是()。
在为瘦体形人设计服装时,在面料色彩的选择上通常采用浅色。()
最新回复
(
0
)