有如下程序: #include<iostream> using namespace std; class B{ public: virtual void f(){cout<<"B";} void g(){cout<<"B";) }; class D:pub

admin2015-11-24  28

问题 有如下程序:
#include<iostream>
using namespace std;
class B{
public:
virtual void f(){cout<<"B";}
void g(){cout<<"B";)
};
class D:public B{
public:
void f(){cout<<"D";}
void g(){cout<<"D";}
};
void h(B*p){p->f();p->g();}
int main(){
D obj;
h(&obj);
return 0;
}
运行这个程序的输出结果是(    )。

选项 A、DD
B、BB
C、BD
D、DB

答案D

解析 在基类B中定义虚函数f()和成员函数g(),而在派生类D中定义了函数f()和同名函数g(    )。而函数h中的形参为指向基类的指针变量p,所以在主函数中执行h(& obj)时,会调用派生类的函数f(),输出D,再调用基类的函数g(),输出B。
转载请注明原文地址:https://kaotiyun.com/show/3lNp777K
0

最新回复(0)