单选题
有如下程序:#include<iostream>using namespace std;class Base{public:Base(){Fuction();}virtual void Fuction(){cout<<"Base::Fuction"<<endl:}};class Derived:public Base{public:Derived(){Fuction();}virtual void Fuction(){cout<<"Derived::Fuction"<<endl:}};int main(){Derived a;return0;}运行后的输出结果是( )。
【正确答案】
A
【答案解析】解析:题意的main()函数中定义一个Derived类对象,对象名为a,在构造a对象时,程序过程为: ①首先调用Derived类的默认构造函数,在默认构造函数执行函数体前,再调用基类的默认构造函数,基类构造函数的函数体中调用函数Function(),此时,由于Derived类对象的构造还未完成,所以在此时Function()调用的是基类的Function()函数,输出:“Base::Function” ②执行Derived类的默认构造函数的函数体,调用Function()函数,此时Derived类对象已经完成初始化列表,所以此时的Function()调用的是Derived类的Function()函数,输出:“Derived::Function”。故本题答案为A选项。