Les fonctions virtuelles interviennent lors de l'utilisation polymorphique d'un pointeur sur une classe de base.
Elles permettent d'appeler les fonctions redéfinies dans la classe dérivée à partir d'un pointeur sur la classe de base.
class Base {
void a() {cout <<Base::a() <<endl;}
virtual void b() {cout <<Base::b() <<endl;}
};
classe Derived : public Base {
void a() {cout <<Base::a() <<endl;}
virtual void b() {cout <<Base::b() <<endl;}
};
int main() {
Base *X = new Derived;
X->a(); // Base::a()
X->b(); // Derived::b()
}