单选题
如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。有如下程序,没有使用多态机制。 #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<<end1;} }; 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。