Рубрики

C ++ | Виртуальные функции | вопрос 2

Прогнозировать вывод следующей программы

#include<iostream>

using namespace std;

  

class Base

{

public:

    virtual void show() { cout<<" In Base \n"; }

};

  

class Derived: public Base

{

public:

    void show() { cout<<"In Derived \n"; }

};

  

int main(void)

{

    Base *bp = new Derived;

    bp->show();

  

    Base &br = *bp;

    br.show();

  

    return 0;

}

(А)

In Base 
In Base 

(В)

In Base 
In Derived

(С)

In Derived
In Derived

(D)

In Derived
In Base 

Ответ: (с)
Объяснение: Поскольку show () является виртуальным в базовом классе, он вызывается в соответствии с типом объекта, на который указывает или указывает объект, а не с типом указателя или ссылки.
Тест на этот вопрос

Рекомендуемые посты:

C ++ | Виртуальные функции | вопрос 2

0.00 (0%) 0 votes