目录: 标题| 题干| 答案| 搜索| 相关
问题

若有以下程序: #include<iostream> using names


若有以下程序: #include<iostream> using namespace Std; Class Base {public: Base() {x=0;} int x;}; class Derivedl:virtua1 public Base {public: Derived1() {x=10;}}; class Derived2:virtual1 public Base {public: Derived2()

  • A20
  • B30
  • C10
  • D0
参考答案
参考解析:

解析: 本题考查虚基类的应用。虽然Derived1和Derived2都是由共同的基类x派生而来的,但由于引入了虚基类,使得它们分别对应基类的不同副本,这时数据成员x只存在一份拷贝,不论在类Derivedl中修改,还是在De- rived2中修改,都是直接对这惟一拷贝进行操作。本题程序执行语句“Derivedob“”时,就会先调用虚基类Base的构造函数,使得x=0,然后执行类Derived1的构造函数使得x=10,再执行类Derived2的构造函数,使得x=20。最后输出x的值为20。

分类:其他
相关推荐

1、若有以下程序 #include void f(int n) main()

若有以下程序#include void f(int n)main(){void f(int n);f(5);}void f(int n);{printf("%dn",n);}则以下叙述不正确的是()A若只在主函数中对函数f进...

2、有下列程序: #include<iostream> using namesp

有下列程序: #include<iostream> using namespace std; class TestClass { int a; public: TestClass(int x)<a=x;} void show(){cout<<a;} }; class TestClass1:publicTestClass { int b; public: TestClaA5B1C0D2

3、有如下程序: #include(iostream) using namesp

有如下程序: #include(iostream) using namespace std; class TestClass{ protected: TestClass(){couti(cout<<‘x’;} TestClass(char c){cout<<c;}}; clas...

4、下列程序的输出结果是( )。 #include<iostream> usin

下列程序的输出结果是( )。 #include<iostream> using namespace std; class TestClass{ static int i; public: TestClass(){i++;} ~TestClass(){i--;} static int getVal(){retum i;} }; int TestClass∷i=0; voiA111B121C211D221

5、有下列程序: #include<iostream> using namesp

有下列程序: #include<iostream> using namespace std; int main() { void function(double val); double val; function(val); cout<<val; return 0; } ...

6、有下列程序: #include<iostream> using namesp

有下列程序: #include<iostream> using namespace std; class TestClass { private: int x,y; public: TestClass (int i,int j) { x=i; y=j; } void print() { cout<<"printl"<<endl; } voAprint1Bprint2Cpfint1 print2D程序编译时出错