选择题   在下列程序的横线处填上适当的内容,使程序执行后的输出结果为ABCD______。
    #include<iostream>
    using namespace std;
    class A
    {
    public:A(){cout<<'A';}
      };
      class B:______
      {
      public:B(){cout<<'B';}
      };
      classC: virtua1 pubtic A
      {
      public:C(){cout<<'C';}
    };
    class D:public B,public D
    {
     public:D(){cout<<'D';}
      };
      void main() {D obj;}
 
【正确答案】 D
【答案解析】由主函数main入手,定义了类D对象obj。其中D为类B和C的公有继承,A是C的虚基类。题目中要求的输出结果为ABCD,依次为类A、类B、类C、类D中构造函数的输出语句。为了保证基类通过多条路径被派生类继承,即保证A只被继承一次,输出一个A,所以需要声明A为C的虚基类,同样也要声明A为B的虚基类。