问题 填空题

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

单项选择题
多项选择题