有如下程序: #include<iostream> using namespace std; class Base{ public: Base(){ Fuction(); } virtual void Fuction(){ cout<<"Base::Fuc

admin2017-07-28  19

问题 有如下程序:
#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、Base::Function
Derived::Function
B、Base::Function
Base::Function
C、Derived::Function
D、Base::Function

答案A

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

最新回复(0)