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