J'ai été récemment interviewé pour une position où C/C++ est la langue principale et pendant une question, on m'a dit qu'il est possible d'utiliser le vtable pour déterminer quelle classe dans une hiérarchie un pointeur de base est effectivement stocké.Comment utiliser le vtable pour déterminer le type de classe
Donc, si, par exemple, vous avez
class A
{
public:
A() {}
virtual ~A() {}
virtual void method1() {}
};
class B : public A
{
public:
B() {}
virtual ~B() {}
virtual void method1() {}
};
et vous instancier A * pFoo = new B()
, est-il en effet possible d'utiliser le vtable pour déterminer si pFoo contient un pointeur vers une instance de A ou B?
Merci pour les réponses. J'ai oublié de mentionner que j'ai demandé si RTTI était ce qu'ils cherchaient, et ils ont dit qu'en général, ils désactivent RTTI alors ce n'est pas ça. Il est tout à fait possible que la solution qu'ils recherchaient soit ce que Martin B a décrit: –