La différence qu'en C, ta fonction g_list_length() qui te renvoie la taille d'une liste chainée (ou tout autre fonction de la GLib), elle est une fois et une seule fois dans /usr/lib/libglib.so.2.0.1 et une et une seule fois en mémoire.
En C++, ta fonction elle se trouve une fois par fichier cpp et par type de données manipulé.
Après, il ne faut pas chercher loin pour voir tous les inconvénients de la méthode C++: polution du cache, de la TLB [1], de la mémoire, du disque dur, temps de compilation affreusement longs, nécessité de recompiler toutes les application si un bugfix ou une mise à jour est appliqué dans la lib, ...
Sans compter que la méthode C à base de pointeurs de fonction permet de faire des choses qui ne sont pas réalisables avec la méthode C++, car le type n'a pas besoin d'être connu lors de la compilation.
[1] Translation Look-aside Buffer, table interne au processeur qui cache les converions addresse virtuelle => addresse physique.
[^] # Re: c++ su><or
Posté par Gaël Le Mignot . En réponse à la dépêche Interview de Bjarne Stroustrup. Évalué à 8.
En C++, ta fonction elle se trouve une fois par fichier cpp et par type de données manipulé.
Après, il ne faut pas chercher loin pour voir tous les inconvénients de la méthode C++: polution du cache, de la TLB [1], de la mémoire, du disque dur, temps de compilation affreusement longs, nécessité de recompiler toutes les application si un bugfix ou une mise à jour est appliqué dans la lib, ...
Sans compter que la méthode C à base de pointeurs de fonction permet de faire des choses qui ne sont pas réalisables avec la méthode C++, car le type n'a pas besoin d'être connu lors de la compilation.
[1] Translation Look-aside Buffer, table interne au processeur qui cache les converions addresse virtuelle => addresse physique.