问答题 使用VC++ 6.0打开 下的源程序文件3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整,使其输出的结果为:
TCA
TCB
TCC
(1)完成类B虚继承于A,请在注释1后添加适当的语句。
(2)完成类C虚继承于A,请在注释2后添加适当的语句。
(3)完成类D继承于B,C,请在注释3后添加适当的语句。
(4)函数fun通过调用基类的fun,完成所输出的内容,请在注释4后添加适当的语句。
注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。
试题程序:
#include <iostream.h>
class TCA
{
public:
void fun()
{
cout<<"TCA"<<endl;
}
};
//********1********
class TCB
{
public:
void fun()
{
cout<<"TCB"<<endl;
}
};
//********2********
class TCC
{
public:
void fun()
{
cout<<"TCC"<<endl;
}
};
//********3********
class TCD
{
public:
void fun()
{
//********4********
}
};
void main()
{
TCD test;
test.fun();
return;
};
【正确答案】
【答案解析】(1)将"class TCB:"补充完整为:class TCB:virtual public TCA
(2)将"class TCC:"补充完整为:class TCC:virtual public TCA
(3)将"class TCD:"补充完整为:class TCD:public TCB,public TCC
(4)应添加TCA::fun();TCB::fun();TCC::fun();
答案考生文件夹 [解析] 本题中第1处要求"完成类B虚继承于A"。在C++中,声明虚基类的一般形式为:class派生类名:virtual 继承方式 基类名,由题目知道TCA为基类,TCB为派生类,所以第1处的语句修改为"class TCB:virtual public TCA"。根据第2处和第3处的要求将标识2和3下的语句修改为"class TCC:virtual public TCA "和"class TCD:public TCB,public TCC"。第4处要求"函数fun 通过调用基类的fun,完成所输出的内容"。在C++中调用基类的成员函数,要使用作用域限定符"::",类名A::函数fun,就是调用类A的函数fun,根据题目中的要求补全对类TCA、TCB以及TCC中的fun函数,即"TCA::fun();TCB::fun();TCC::fun();"。