有如下程序: #include using namespaee std; class Base{ public: Base(){ Fuction(); } virtual void Fucti

admin2020-10-21  8

问题 有如下程序:
    #include
    using namespaee std;
    class Base{
    public:
    Base(){
    Fuction();
    }
    virtual void Fuction(){
    cout<<"Base::Fuction"<    }
    };
    class Derived:public Base{
    public:
    Derived(){
    Fuction();
    }
    virtual void Fuetion(){
    cout<<"Derived::Fuction"<    }
    };
    int main(){
    Derived a:
    return 0;
    }
    运行后的输出结果是(    )。

选项 A、Base::Function
    Derived::Function
B、Base::Function
    Base::Function
C、Derived::Function
D、Base::Function

答案A

解析 题意的main()函数中定义一个Derived类对象,对象名为a,在构造a对象时,程序过程为:①首先调用Derived类的默认构造函数,在默认构造函数执行函数体前,再调用基类的默认构造函数,基类构造函数的函数体中调用函数Function(),此时,由于Deri,red类对象的构造还未完成,所以在此时Function()调用的是基类的Function()函数,输出:“Base::Function”②执行Derived类的默认构造函数的函数体,调用Function()函数,此时Derired类对象已经完成初始化列表,所以此时的Function()调用的是Derived类的Function()函数,输出:“Derived::Function”。故本题答案为A选项。
转载请注明原文地址:https://kaotiyun.com/show/n5yp777K
0

随机试题
最新回复(0)