Виртуелни функции

    Виртуелните функции се функции во основната класа за кои се очекува да бидат заменети во изведената класа. Со користење на виртуелна функција можеме да повикаме функции на изведена класа користејќи покажувач на основната класа.

    Декларацијата за виртуелна функција се прави со користење клучен збор virtual пред декларација на функција како што е прикажано подолу:

virtual function-declaration;

Пример

#include <iostream>

using namespace std;

 

class Osnovna {

   public:

    virtual void print() {

        cout << "Osnovna Funkcija" << endl;

    }

};

 

class Izvedena : public Osnovna {

   public:

    void print() {

        cout << "Izvedena Funkcija" << endl;

    }

};

 

int main() {

    Izvedena izvedena1;

   

    Osnovna * osnovna1 = &izvedena1;   // pointer od tipot Osnovna pokazuva kon izvedena1

 

    osnovna1->print();                                // povikuvanje funkcija od Izvedena klasa

 

    return 0;

}

 

Пример 2

#include <iostream>
using namespace std;

class Poligon {
  protected:
    int sirina, visina;
  public:
    void set_vrednosti (int a, int b)
      { sirina=a; visina=b; }
    virtual int povrsina ()
      { return 0; }
};

class Pravoagolnik: public Poligon {
  public:
    int povrsina ()
      { return sirina * visina; }
};

class Trijagolnik: public Poligon {
  public:
    int povrsina ()
      { return (sirina * visina / 2); }
};

int main () {
  Pravoagolnik prav;
  Trijagolnik trij;
  Poligon poly;
  Poligon * ppoly1 = &prav;
  Poligon * ppoly2 = &trij;
  Poligon * ppoly3 = &poly;
  ppoly1->set_vrednosti (4,5);
  ppoly2->set_vrednosti (4,5);
  ppoly3->set_vrednosti (4,5);
  cout << ppoly1->povrsina() << '\n';
  cout << ppoly2->povrsina() << '\n';
  cout << ppoly3->povrsina() << '\n';
  return 0;
}