单选题 有如下程序:
#include<iostream>
using namespace std;
Class Base
{
protected:
int id;
public:
Base(){id=1;}
};
class Middle1:virtual public Base
{
public:
Middle1()(id+=1; cout<<id;}
};
class Middle2:virtual public Base
{
public:
Middle2(){id+=2; cout<<id;}
};
class Derived:public Middle1, public Middle2
{
public:
Derived(){cout<<id<<endl;}
};
int main()
{
Derived obj;
return 0;
}
其运行结果是______。
【正确答案】 D
【答案解析】[解析] 引入虚基类后,无论虚基类被继承多少次,派生类的对象中只存存一个虚基类的子对象。创建派生类对象时,虚基类的构造函数将最先执行,且只能被执行一次。