Quels sont les arguments pour choisir entre un design classique héritage virtuel etc et une implémentation à l'aide de templates ?
j'ai l'impression qu'à chaque fois les deux sont possibles, mais je ne sais pas quel critère retenir pour arbitrer....
Quels sont les arguments pour choisir entre un design classique héritage virtuel etc et une implémentation à l'aide de templates ?
j'ai l'impression qu'à chaque fois les deux sont possibles, mais je ne sais pas quel critère retenir pour arbitrer....
Ce que tu demandes est un non sens puisque template et héritage sont orthogonaux. Ils n'entrent pas en concurrence, ils se complètent.
"Never use brute force in fighting an exponential." (Andrei Alexandrescu)
Mes articles dont Conseils divers sur le C++
Une très bonne doc sur le C++ (en) Why linux is better (fr)
hum je vois. Mais dans le cas du CRTP on a bien à faire à quelquechose de non orthogonal non ?
Dans le cas du CRTP, on simule du polymorphisme d'inclusion (virtual) avec des templates, mais les deux ne sont pas mélangés. Mais dans ce cas tu ne pourras pas stocker par exemple pleins d'éléments de cette hiérarchie dans un même conteneur, car la classe mère est template et donc Mere<int> est incompatible avec Mere<std::string> par exemple.
Je te conseille de lire cette page : http://cpp.developpez.com/faq/cpp/?p..._polymorphisme depuis l'ancre que j'ai donnée jusque tout en bas.
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
Bonsoir,
personnellement, je privilégie toujours les templates par rapport à l'héritage, quand c'est possible, de manière à conserver de bonnes performances. Je fais notamment tout pour éviter d'avoir à utiliser la vitualité pure.
Partager