单选题 如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员,有如下程序,没有使用多态机制。
#include<iostream>
using namespace std;
class Base{
int 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;
pb->show();
return 0;
}
运行时输出的结果是______。
【正确答案】 A
【答案解析】[解析] 创建基类对象B1时,调用构造函数B1.a=50,B1.b=50。创建指针对象时不调用构造函数。创建派生类对象时调用基类构造函数B1.a=10,B1.b=20,同时调用派生类构造函数c=30,d=40。基类的指针指向派生类对象,由于没有使用多态机制,所以基类指针只能访问基类继承成员,故输出显示时,调研那个的是基类的show函数。