在下列程序的横线处填上适当的内容,使程序执行后的输出结果为ABCD。 #include<iostream> using namespace std; class A { public:A(){cout<<’A’;}

admin2010-12-16  26

问题 在下列程序的横线处填上适当的内容,使程序执行后的输出结果为ABCD。    #include<iostream>    using namespace std;    class A    {    public:A(){cout<<’A’;}      };      class B: ______      {      public:B(){cout<<’B’;}      };      class C:virtual public A      {      public:C(){cout<<’C’;}    };    class D:public B,public C    {      public:D(){cout<<’D’;}      };      void main(){D obj;}

选项 A、public A
B、private A
C、protected A
D、virtual public A

答案D

解析 由主函数mian入手,定义了类D对象obj。其中D为类B和C的公有继承,A是C的虚基类。题目中要求的输出结果为“ABCD”,依次为类A,类B,类C,类D中构造函数的输出语句。为了保证基类通过多条路径被派生类继承时,即保证A只被继承一次,输出一个A,所以不但需要声明A为C的虚基类,同样也要声明A为B的虚基类。
转载请注明原文地址:https://kaotiyun.com/show/QIVp777K
0

最新回复(0)