> Au niveau des performances, un appel de méthode "virtual" (qui prend donc potentiellement en compte l'héritage) prend 0,75 fois le temps d'un appel C normal.
Tu veux dire qu'un appel à une méthode virtuelle prend moins de temps qu'un appel de fonction C ? :-)
Et sinon, ça n'est pas seulement un pb de perfs mais de taille mémoire. Une classe avec des méthodes virtuelles contient un pointeur vers une table de ces methodes virtuelles, ce qui casse la compatibilité avec C.
En C++, tu peux prendre une struct C, la dériver, y ajouter toutes les méthodes non virtuelles que tu veux, et passer cette classe à une fonction C qui prend normalement la struct comme argument et ça marchera. Si tu ajoutes une méthode virtuelle, ça ne marche plus.
[^] # Re: Erreurs de C++
Posté par Guillaume Laurent . En réponse à la dépêche C# et Java, une étude comparée. Évalué à 1.
Tu veux dire qu'un appel à une méthode virtuelle prend moins de temps qu'un appel de fonction C ? :-)
Et sinon, ça n'est pas seulement un pb de perfs mais de taille mémoire. Une classe avec des méthodes virtuelles contient un pointeur vers une table de ces methodes virtuelles, ce qui casse la compatibilité avec C.
En C++, tu peux prendre une struct C, la dériver, y ajouter toutes les méthodes non virtuelles que tu veux, et passer cette classe à une fonction C qui prend normalement la struct comme argument et ça marchera. Si tu ajoutes une méthode virtuelle, ça ne marche plus.