填空题 在下面程序的横线处填上适当的内容,使程序执行后的输出结果为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;}
  • 1、
【正确答案】 1、Virtual public A Virtual public A    
【答案解析】[解析] 本题考查虚基类的应用。通过虚基类所派生的类,在所产生的对象中,只包含了一个和其他类共享的基础对象,也就是说,从同一个基类中以虚拟方式派生的所有类,在它们所产生的对象里,不会有一份基础对象,而只是在内存里保留一份基础对象,而派生类中只保留指向此基础对象的指针,这样就不会同时有两份基础对象的情形发生。题中程序最后字符A只输出了一次,所以类A必须为类B和类C的虚基类。