Doublons possibles:
C++ : implications of making a method virtual
Why is 'virtual' optional for overridden methods in derived classes?C++: les classes dérivées et des méthodes virtuelles
Je me demande, quel est le comportement documenté dans le cas suivant:
Vous avez
class A
{
virtual void A()
{
cout << "Virtual A"<<endl;
}
void test_A()
{
A();
}
}
class B: public A
{
void A()
{
cout << "Non-virtual A in derived class"<<endl;
}
void test_B()
{
A();
}
}
A a; B b;
a.test_A();
b.test_A();
b.test_B();
Qu'est-ce qu'il est censé faire selon la norme C++ et pourquoi? GCC fonctionne comme B :: A est aussi virtuel. Qu'est-ce qui devrait se produire en général lorsque vous remplacez la méthode virtuelle par une méthode non virtuelle dans une classe dérivée?
Votre code [ne devrait pas compiler] (http: //ideone.com/gI9bI). –
Je pense que ceci est également répondu ici: http://stackoverflow.com/questions/2963965/why-is-virtual-optional-for-overridden-methods-in-derived-classes – mkj