Dans un objet de la classe tu auras (vraissemblablement, il y a d'autres techniques possibles) un pointeur vers une table contenant 2 pointeurs.Envoyé par kpouer
Dans un objet de classe B tu auras un pointeur vers une table contenant 2 pointeurs, un vers B::tutu, un vers A::tata.class B extends A
{
// on surcharge tutu()
void tutu() {...}
}
En C++ on a deux types de fonctions membres, les fonctions membres virtuelles -- qui ont une entrée dans la table -- et les fonctions membres non virtuelles -- qui n'en ont pas. Si une classe n'a pas de fonctions membres virtuelles, elle n'a pas non plus de pointeur vers cette table (qui serait vide). Ce pointeur a un cout qui est particulièrement sensible pour de petits objets. Comme exemple tu as un point en 3 dimentions, un autre exemple où ça coute proportionellement beaucoup sont les wrappers (pour lesquelles Java double la mémoire nécessaire).
Partager