Je lis beaucoup de gens qui écrivent "une table virtuelle existe pour une classe qui a une fonction virtuelle déclarée dedans".Table virtuelle C++
Ma question est, est-ce qu'un vtable existe seulement pour une classe qui a une fonction virtuelle ou existe-t-il aussi pour les classes dérivées de cette classe.
par exemple
class Base{
public:
virtual void print(){cout<<"Base Print\n";}
};
class Derived:public Base{
public:
void print(){cout<<"Derived print\n";}
};
//From main.cpp
Base* b = new Derived;
b->print();
Question: Y avait-il pas eu vtable pour la classe dérivée, la sortie n'aurait pas été « impression dérivée ». Donc, IMO il existe un vtable pour toute classe qui a une fonction virtuelle déclarée et aussi dans les classes héritant de cette classe. Est-ce correct ?
Pour terminer l'expérience, créez la classe derived2 qui hérite de derived et remplace également print. Appelez print sur une telle instance via un pointeur vers la base ... – VoidPointer
En savoir plus sur le Vtable @ ci-dessous Lien: http://www.learncpp.com/cpp-tutorial/125-the-virtual-table/ –