Рубрики

Виртуальные функции в производных классах

В C ++, когда функция-член объявляется как виртуальная функция в базовом классе, она становится виртуальной в каждом классе, производном от этого базового класса. Другими словами, нет необходимости использовать ключевое слово virtual в производном классе при объявлении переопределенных версий функции виртуального базового класса.

Например, следующая программа печатает «C :: fun () selected», так как B :: fun () автоматически становится виртуальным.

#include<iostream>

  

using namespace std;

  

class A {

  public:

    virtual void fun()

    { cout<<"\n A::fun() called ";}

};

  

class B: public A {

  public

    void fun() 

    { cout<<"\n B::fun() called "; }      

};

  

class C: public B {

  public:

    void fun()

    { cout<<"\n C::fun() called "; }      

};

  

int main()

{

   C c; // Объект класса C

   B *b = &c; // Указатель типа B *, указывающий на c

   b->fun();  // эта строка выводит "C :: fun () звонил"

   getchar();

   return 0;

}

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

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

Виртуальные функции в производных классах

0.00 (0%) 0 votes