[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [HS] C et le preprocesseur [Re: Serveur SMTP]



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.



Reply to: