On Wed, Jul 09, 2003 at 01:58:51PM +0200, Nicolas Peninguy wrote: > >d'étendre le langage plus tard. De la même façon que les > >templates du C++ sont un bricolage (spécifié, certes) pour > >pallier au manque de modèle objet hierarchique. > > Euh, la généricité du bricolage ?
Non, juste les templates. Si C++ avait une hierarchie de classes (cf autre poste de ce matin là dessus) les templates ne serviraient à rien: il suffirait d'écrire du code "normal" qui s'applique à la classe la plus générique. Un exemple facile: définissons une fonction gabs(), valeur absolue, qui marche pour tout type de nombres. On définirait cette fonction sur la classe Nombre, dont seraient dérivés Int, Float, etc. (La classe Complex redéfinirait gabs() bien entendu). En C++, il faut utiliser un template. Mais mais mais... le template peut s'appliquer sur absolument n'importe quelle classe, y compris String, char, et autres classes pour lesquelles ça ne veut rien dire. En fait, un template n'est qu'une écriture différente d'une énorme macro, et je suis sûr qu'on peut obtenir un effet pratiquement identique en C avec le préprocesseur. > Pour moi le bricolage c'est Java avec l'obligation de > caster les objets quand on les récupère dans un conteneur > : aucun contrôle de typage à la compilation. Je ne connais pas suffisament Java pour juger. Et le jour où je defendrai Java n'est pas encore venu :-) /Y -- Marbles should not normally be poked.