考虑下面的C++程序。
null
#include<iostream> using namespace std; class A { public : A(){ cout << "1" ;} A( const A &obj){ cout << "2" ;} }; class B: virtual A { public : B(){cout << "3" ;} B( const B & obj){cout<< "4" ;} }; class C: virtual A { public : C(){cout<< "5" ;} C( const C & obj){cout << "6" ;} }; class D:B,C { public : D(){cout<< "7" ;} D( const D & obj){cout << "8" ;} }; int main() { D d1; D d(d1); } |
以下哪项未打印?
这个问题由Sudheendra Baliga提出 (A) 2. (B) 4. (C) 6. (D) 所有这些 答复: (D) 说明: 输出将是13571358 as 1357(对于D d1)和as 1358(对于D D(d1))……原因是……在继承期间,我们需要显式调用基类的复制构造函数,否则只调用基类的默认构造函数。还有一件事,因为我们在基类之前使用虚拟,所以在多重继承中基类只有一个副本。如果没有虚拟输出,将是……13157··························…对于每个派生类对象,分别为13158 as(1315713158)。 这个问题的小测验
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END