有如下程序:    #include <iostream>    using namespace std;    class Base {    public:        void output() { cout<<1; }        virtua

admin2017-10-17  24

问题 有如下程序:    #include <iostream>    using namespace std;    class Base {    public:        void output() { cout<<1; }        virtual void Print() { cout<<’B’; }    };    class Derived: public Base {    public:        void output() { cout<<2; }        void Print() { cout<<’D’; }    };    int main() {        Base *ptr=new Derived;        ptr->output();        ptr->Print();        delete ptr;        return ();    }程序的输出结果是

选项 A、1B
B、1D
C、2B
D、2D

答案B

解析 本题考查的知识点是:虚函数与多态性。在成员函数声明的前面加上virtual修饰,即把该函数声明为虚函数。在C++中,一个基类指针(或引用)可以用于指向它的派生类对象,而且通过这样的指针(或引用)调用虚函数时,被调用的是该指针(或引用)实际所指向的对象类的那个重定义版本。本题中,就是通过基类Base的指针ptr指向new出来的派生类Derived对象,从基类的定义中可以看出,output()函数是普通成员函数,而Print()函数是虚函数。所以,通过ptr指针调用的output()是基类中的output(),而通过它调用的Print()则是派生类中的Print()。故本题的输出结果是1D,应该选择B。
转载请注明原文地址:https://kaotiyun.com/show/WXAp777K
0

最新回复(0)