如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。有如下程序,没有使用多态机制。 #include<iostream> using namespace std; class Base{

admin2020-04-07  54

问题 如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。有如下程序,没有使用多态机制。
    #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、10,20
B、30,40
C、20,30
D、50,50

答案A

解析 此题考查的是多态性。在C++中,一个基类指针可以用于指向它的派生类对象,而且通过这样的指针调用虚函数时,被调用的是该指针实际所指向的对象类的那个重定义版本。在实函数的情况下。通过基类指针所调用的只能是基类的那个函数版本,无法调用到派生类中重定义函数。此题中,通过指针pb所调用的是基类的版本,即输出a和b的值10,20。
转载请注明原文地址:https://jikaoti.com/ti/9AA0FFFM
0

最新回复(0)