问题 填空题

在下面程序的横线处填上适当的内容,使程序执行后的输出结果为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 publicA virtual public A。

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

多项选择题 案例分析题
单项选择题