在下面程序的横线处填上适当的内容,使程序执行后的输出结果为ABCD。 #include <iostream.h> using namespace std; class A { pu

admin2010-12-16  31

问题 在下面程序的横线处填上适当的内容,使程序执行后的输出结果为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的虚基类。
转载请注明原文地址:https://kaotiyun.com/show/TOjp777K
0

最新回复(0)