有如下程序: #inc1ude<iostream> using namespace std; class Base{ public: void output() {cout<<l

admin2016-11-23  17

问题 有如下程序:
#inc1ude<iostream>
       using namespace std;
        class Base{
public:
                       void output() {cout<<l; }
                       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 0;
    }
    程序的输出结果是   (           ) 。

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

答案B

解析 此题考查的是虚函数与多态性。在成员函数的声明前面加上virual关键字,即可把函数声明为虚函数;在C++中,一个基类指针可以用于指向它的派生类对象,而且通过这样的指针调用虚函数时,被调用的是该指针实际所指向的对象类的那个重定义版本。本题中,从基类的定义可以看出:output()函数是普通成员函数,而Print()函数是虚函数。所以,通过ptr指针调用的output()是基类中的output(),而通过它调用的Print()则是派生类中的Print(     )。
转载请注明原文地址:https://kaotiyun.com/show/KzAp777K
0

最新回复(0)