单选题 如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。有如下程序,没有使用多态机制。
#include<iostream>
using namespace std;
class Base{
iht a,b;
public:
Base(int x,int y){a=x;b=y;}
void show(){cout<<a<<","<<b<<endl;}
};
class Derived:public Base{
int c,d;
public:
Derived(int x,int y,int z,int m):Base(x,y){c=z;d=m;}
void show(){cout<<c<<","<<d<<endl;}
};
int main()
{
Base B1(50,50),*pb;
Derived D1(10,20,30,40);
pb=&D1;
return 0;
return();
}
运行时输出的结果是______。
【正确答案】 A
【答案解析】[解析] 此题考查的是多态性。在C++中,一个基类指针可以用于指向它的派生类对象,而且通过这样的指针调用虚函数时,被调用的是该指针实际所指向的对象类的那个重定义版本。在实函数的情况下。通过基类指针所调用的只能是基类的那个函数版本,无法调用到派生类中重定义函数。此题中,通过指针pb所调用的是基类的版本,即输出a和b的值10,20。