Tables virtuelles et pointeurs virtuels pour plusieurs héritages virtuels et transtypage de type

Je suis un peu confus au sujet de vptr et la représentation des objets dans la mémoire, et j'espère que vous pourrez m'aider à comprendre la question mieux.

  1. Envisager B hérite de A et à la fois de définir des fonctions virtuelles f(). De ce que j'ai appris de la représentation d'un objet de la classe B dans la mémoire ressemble à ceci:[ vptr | A | B ]
    et le vtbl que vptr points d'contient B::f(). J'ai aussi compris que le casting de l'objet à partir de B à A ne fait rien, sauf en ignorant la B partie à la fin de l'objet. Est-il vrai? N'a pas ce comportement est mauvais? Nous voulons que l'objet de type A pour exécuter A::f() méthode et pas B::f().
  2. Il y a un certain nombre de vtables dans le système comme le nombre de classes?
  3. Comment un vtable de classe qui hérite de deux ou plusieurs classes? Comment sera l'objet de la C d'être représenté dans la mémoire?
  4. Même que la question 3, mais avec l'héritage virtuel.

source d'informationauteur Artium