问题 填空题

在下面程序的横线处填上适当的内容,使程序执行后的输出结果为ABCD。
#include <iostream.h>
using namespace std;
class A

public: A() cout<<’A’;
;
class B:______

public: B() cout<<’B’;
;
class C:______

public: C( cout<<’C’;
;
class D:public B, public C

public: D()cout<<’D’;
;
void main()D obj;

答案

参考答案:virtual public A; visual public A

解析: 本题考核虚基类的应用。通过虚基类所派生的类,在所产生的对象中,只包含了一个和其他类共享的基础对象,也就是说,从同一个基类中以虚拟方式派生的所有类,在它们所产生的对象里,不会有一份基础对象,而只是在内存里保留一份基础对象,而派生类中只保留指向此基础对象的指针,这样就千会同时有两份基类对象的情形发生。题中程序最后字符A只输出了一次,所以类A必须为类 B和类C的虚基类。

问答题 简答题
单项选择题