Programare Orientată Obiect
Funcții virtuale
O funcție virtual poate fi suprascrisă în clasele derivate. Dispatch-ul virtual decide la runtime (nu la compilare) ce versiune se apelează.
class Animal {
public:
virtual void sunet() { cout << "..." << endl; }
virtual ~Animal() {} // destructor virtual — obligatoriu!
};
class Pisica : public Animal {
public:
void sunet() override { cout << "Miau!" << endl; }
};
class Caine : public Animal {
public:
void sunet() override { cout << "Ham!" << endl; }
};
Animal* a = new Pisica();
a->sunet(); // "Miau!" (polimorfism)
delete a;Clasă abstractă — funcție pur virtuală
class Forma {
public:
virtual double arie() = 0; // pur virtuală (= 0)
// Forma nu poate fi instanțiată direct
};Dacă o clasă are cel puțin o funcție pur virtuală, este abstractă și nu poate fi instanțiată direct.