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

admin2016-11-23  25

问题 如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。有如下程序,没有使用多态机制。
    #inc1ude <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;
    return 0:
    return();
    }
    运行时输出的结果是(     )。

选项 A、10,20
B、30,40
C、20,30
D、50,50

答案A

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

最新回复(0)