Sobes.tech
Junior — Middle

Jakie są zalety i wady korzystania z tabel wirtualnych?

sobes.tech AI

Odpowiedź od AI

Tablice wirtualne (vtable) to mechanizm w programowaniu obiektowym, który służy do implementacji dynamicznego polimorfizmu (funkcji wirtualnych).

Zalety:

  • Pozwalają wywoływać metody klas pochodnych za pomocą wskaźnika lub referencji do klasy bazowej.
  • Zapewniają elastyczność i rozszerzalność kodu.
  • Ułatwiają utrzymanie i dodawanie nowych klas bez zmiany istniejącego kodu.

Wady:

  • Niewielkie obniżenie wydajności z powodu dodatkowego poziomu wywołania funkcji pośrednich.
  • Zwiększenie rozmiaru obiektu przez wskaźnik na tablicę wirtualną.
  • Złożoność implementacji i zrozumienia dla początkujących.

Przykład w C++:

class Base {
public:
    virtual void foo() { std::cout << "Base" << std::endl; }
};

class Derived : public Base {
public:
    void foo() override { std::cout << "Derived" << std::endl; }
};

Base* b = new Derived();
b->foo(); // Wywoła Derived::foo dzięki vtable