首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了类baseA、priA1和priA2,其中priA1类由baseA类公有派生,priA2类由priA1类公有派生。上述三个类的定义并不完整,请按要求完成下列操作,将程序补充完整。
使用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了类baseA、priA1和priA2,其中priA1类由baseA类公有派生,priA2类由priA1类公有派生。上述三个类的定义并不完整,请按要求完成下列操作,将程序补充完整。
admin
2019-06-05
98
问题
使用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了类baseA、priA1和priA2,其中priA1类由baseA类公有派生,priA2类由priA1类公有派生。上述三个类的定义并不完整,请按要求完成下列操作,将程序补充完整。
程序输出结果如下:
10
5
10 5 7
(1)定义类baseA的构造函数,该构造函数有一个整型的参数m,在构造函数中请将m赋值给数据成员a。请在注释“//********1********”之后添加适当的语句。
(2)定义类priA1的构造函数,该构造函数有两个整型的参数m和n,在构造函数中请将m赋值给数据成员b,将n作为基类baseA构造函数的参数值传入。请在注释“//********2********”之后添加适当的语句。
(3)定义类priA2的构造函数,该构造函数有三个整型的参数m,n和k,在构造函数中请将m赋值给数据成员c,将n和k分别赋值给基类priAl构造函数的参数m和n。请在注释“//********3********”之后添加适当的语句。
(4)完成类priA2的成员函数show的定义,该函数调用基类成员函数,输出基类私有成员a和b及类priA2自身的数据成员c的值,上述三个值在输出时以空格隔开。请在注释“//********4********”之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
1 #include<iostream.h>
2 class baseA
3 {
4 int a;
5 public:
6 //********1********
7
8 int geta(){return a;)
9 };
10 class priA1:public baseA
11 {
12 int b;
13 public:
14 //********2********
15
16 int getb(){return b;}
17 };
18 class priA2:public priA1
19 {
20 int c;
21 public:
22 //********3********
23
24 void show()
25 {
26 //********4********
27
28 }
29 };
30 void main()
31 {
32 priA2 a(7,5,10);
33 cout<<a.geta()<<end1;
34 cout<<a.getb()<<end1;
35 a.show();
36 }
选项
答案
(1)添加语句:baseA(int m){ a=m;} (2)添加语句:priAl(int m,int n):baseA(n){b=m;} (3)添加语句:priA2(int m,int n,int k):priA1(n,k){c=m;} (4)添加语句:cout<<geta()<<’’’’<<getb()<<’’ ’’<<c<<end1;
解析
程序当中定义了类baseA、priA1和priA2,其中priA1类由baseA类公有派生,pfiA2类由priA1类公有派生。构造函数是类的一种特殊的成员函数,其函数名和类名一致。构造函数可以带参数也可以不带参数,带参数的构造函数根据构造函数内部赋值语句可知其参数形式。公有派生类可以访问基类的公有成员,因此pfiA2类可以调用类baseA的geta()函数和priA1类的getb()函数,通过调用这两个函数得到基类私有成员a和b。
(1)根据题目1要示,构造函数名和类名一致,显然baseA构造函数名为baseA(),在baseA()中通过参数m完成对成员变量a的赋值,因此构造函数名为baseA(int m),在函数内部对成员a赋值,故第1个标识下应添加“baseA(int m){a=m;}”。
(2)根据题目2要示,构造函数形式为priA1(intm,int n),m赋值给priA1类成员b,将n作为基类baseA构造函数的参数值传入,故第2个标识下应添加“priA1(int m,int n):baseA(n){b=m;}”。
(3)根据题目3要示,函数形式为priA2(int m,intn,int k),在构造函数中将m赋值给数据成员c,将n和k分别赋值给基类priA1构造函数的参数m和n,因此第3个标识下应添加“pfiA2(int m,int n,intk):priA1(n,k){c=m;}”。
(4)根据题目4要示,priA2类公有派生于priA1,而priAl公有派生于baseA,因此在priA2类中可以调用基类的geta()和getb()来获得基类私有成员a和b,再输出priA2的私有成员c即满足要求,因此第4个标识下应添加“cout<<geta()<<’’ ’’r<getb()<<’’ ’’<<c<<end1;”。
转载请注明原文地址:https://kaotiyun.com/show/V18p777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
关系关系代数是关系操纵语言的一种传统表示方式,它以集合代数为基础发展起来的,但它的运算对象和运算结果均是关系,这些新关系仍可以使用同样的代数运算进一步操作。关系代数也是一种抽象的查询语言,它通过对关系的运算来表达查询和修改处理的需求。
下面关于指针的说法中错误的是()。A)在指针定义的同时可以对其进行初始化B)指针根据其所指向变量的类型的不同,所占用内存大小也不同C)指针中存放的是内存单元的地址D)相同类型的指针之间可以相互赋值
假定TestClass为一个类,则该类的拷贝构造函数的声明语句为()。A)TestClass(TestClassx)B)TestClass&(TestClassx)C)TestClass(TestClass*x)D)TestC
下列对于线性链表的描述中,正确的是()。A)存储空间必须连续,且各元素的存储顺序是任意的B)存储空间不一定是连续,且各元素的存储顺序是任意的C)存储空间必须连续,且前件元素一定存储在后件元素的前面D)存储空间不一定是连续,且前件元素
下列关于栈的叙述中,正确的选项是()。A)在栈中只能删除数据B)在栈中只能插入数据C)栈是先进先出的线性表D)栈是先进后出的线性表
A、 B、 C、 D、 B常用的软件结构设计工具是结构图,也称程序结构图。DFD图(数据流图)是以图形的方式描述数据在系统中流动和处理的过程,只反映系统必须完成的逻辑功能,它是需求分析阶段的图形工具。盒式图(
C++系统预定了4个用于标准数据流的对象,下列选项中不属于此类对象的是()。A)coutB)cinC)cerrD)cset
下列关于函数模板的描述中,正确的是()。A)函数模板是一个实例函数B)使用函数模板定义的函数没有返回类型C)函数模板的类型参数与函数的参数相同D)通过使用不同的类型参数,可以从函数模板得到不同的实例函数
要利用C++流实现输入输出的各种格式控制,必须在程序中包含的头文件是()。A)fstreamB)istrearaC)ostreamD)iomanip
随机试题
关于S-D序列的叙述正确的是
通过增加进口商的资金负担,影响资金的流转,从而起到限制进口作用的措施是()
糖尿病患者检测果糖胺的目的
深部血肿及关节出血主要见于
债务融资一定能够提高上市公司的净资产收益率,具有财务杠杆的作用。()
当个体在群体中处于少数派时,个体会面临强大的群体压力,在这种情况中表现出跟随大众意见和行为的表现,这种现象被称为()。
简述如何培养学习动机。
下列关于爱岗敬业的说法中,你认为不正确的是()。
Walking—likeswimming,bicyclingandrunning—isanaerobicexercise,【C1】________buildsthecapacityforenergyoutputandphysi
DavidCameronhasnoticedthathealthandsafetyregulationsstopschoolstakingchildrenoutonfieldtrips,outdooractivitie
最新回复
(
0
)