使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了类BA、PA1和PA2,其中PA1类由BA类公有派生,PA2类由PA1类公有派生。上述3个类的定义并不完整,请按要求完成下列操作,将程序补充完整。 程序输出结果如下: 10

admin2013-10-15  7

问题 使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了类BA、PA1和PA2,其中PA1类由BA类公有派生,PA2类由PA1类公有派生。上述3个类的定义并不完整,请按要求完成下列操作,将程序补充完整。
    程序输出结果如下:
    10
    5
    10 5 7
    (1)定义类BA的构造函数,该构造函数有一个整型的参数m,在构造函数中将m赋值给数据成员a。请在注释1之后添加适当的语句。
    (2)定义类PA1的构造函数,该构造函数有两个整型的参数m和n,在构造函数中将m赋值给数据成员b,将n作为基类BA构造函数的参数值传入。请在注释2之后添加适当的语句。
    (3)定义类PA2的构造函数,该构造函数有3个整型的参数m、n和k,在构造函数中请将m赋值给数据成员c,将n和k分别赋值给基类PA1构造函数的参数m和n。请在注释3之后添加适当的语句。
    (4)完成类PA2的成员函数show的定义,该函数调用基类成员函数,输出基类私有成员a、b及类PA2自身的数据成员c的值,上述3个值在输出时用空格隔开。请在注释4之后添加适当的语句。
    注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
试题程序:
#include
class BA
{
int a;
public:
//* * * * * * * * 1 * * * * * * * *
int beta(){return a;}
};
class PA1:public BA
{
int b;
public:
//* * * * * * * * 2 * * * * * * * *
int getb(){return b;)
};
class PA2:public PA1
{
int C;
public:
//* * * * * * * * 3 * * * * * * * *
void show()
{
//* * * * * * * * 4 * * * * * * * *
}
};
void main()
{
PA2 a(7,5,10);
cout<cout<a.show();
}

选项

答案(1)应添加“BA(int m){a=m;}”。 (2)应添加“PA1(int m,int n):BA(n){b=m;}”。 (3)应添加“PA2(int m,int n,int k):PA1(n,k){c=m;}”。 (4)应添加“cout<
解析 根据第1处要求,构造函数的函数名和类名一致,显然BA构造函数的名称为BA,在BA()中通过参数m完成对成员变量a的赋值,因此构造函数的名称为BA(int m),在函数内部对成员a赋值,故第1处的语句应添加“BA(int m){a=m;}”。
    根据第2处的要求,构造函数的形式为“PA1(int m,int n)”,m赋值给PA1类成员b,将n作为基类BA构造函数的参数值传入,故第2处应添加“PA1(int m,int n):BA(n){b=m;)”。
    根据第3处的要求,函数形式为PA2(int m,int n,intk),在构造函数中将m赋值给数据成员c,将n和k分别赋值给基类PA1构造函数的参数m和n,因此第3处应添加“PA2(int m,int n,int k):PA1(n,k){c=m;)”。
    根据第4处的要求,PA2类公有派生于PA1,而PA1公有派生于BA,因此在PA2类中可以调用基类的geta()和getb()来获得基类私有成员a和b,再输出PA2的私有成员c即满足要求,因此第4处应添加“cout<
转载请注明原文地址:https://jikaoti.com/ti/STXiFFFM
0

最新回复(0)