A-A+
要使程序执行后的输出结果为ABCD 应在横线处添加语句()。 #include<iostre
问题详情
要使程序执行后的输出结果为ABCD,应在横线处添加语句()。 #include<iostream> using namespace std; { 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
解析:由主函数main入手,定义了类D对象obj。其中D为类B和C的公有继承,A是C的虚基类。题目中要求的输出结果为“ABCD”,依次为类A,类B,类C,类D中构造函数的输出语句。为了保证基类通过多条路径被派生类继承时,即保证A只被继承一次,输出一个A,所以不但需要声明A为C的虚基类,同样也要声明A为B的虚基类。