class A
{
public:
void F1() { cout << "A::F1()\n"; }
virtual void F2() { cout << "A::F2()\n"; }
};
class B : public A
{
public:
void F1() { cout << "B::F1()\n"; }
void F2() { cout << "B::F2()\n"; }
};
int main()
{
A a;
a.F1(); // affiche "A::F1()"
a.F2(); // affiche "A::F2()"
B b;
b.F1(); // affiche "B::F1()"
b.F2(); // affiche "B::F2()"
// copie non polymorphique
a = b;
a.F1(); // affiche "A::F1()"
a.F2(); // affiche "A::F2()"
// utilisation polymorphique de B (par pointeur)
A * pa = &b;
pa->F1(); // affiche "A::F1()"
pa->F2(); // affiche "B::F2()" <-- grace à virtual
// utilisation polymorphique de B (par référence)
A & ra = b;
ra.F1(); // affiche "A::F1()"
ra.F2(); // affiche "B::F2()" <-- grace à virtual
}
Partager