C quoi les templates ? - Programmation
Marsh Posté le 18-09-2001 à 12:30:02
voilou le mieux c que par exemeple tu aille voir ce site:
http://casteyde.christian.free.fr/ [...] c4269.html
@+++ bon courage
Marsh Posté le 18-09-2001 à 12:43:09
Templates allow you to reuse source code by providing the compiler with a way to substitute type names in
the body of a class or function. This supports the use of container class libraries, which are important tools for the rapid, robust development of object-oriented programs
vw
Marsh Posté le 18-09-2001 à 22:47:59
Au lieu d'écrire:
Code :
|
Tu peux écrire :
Code :
|
Avantage : tu évites de dupliquer ton code n fois (puisque le code n'existe qu'en un seul exemplaire : le code générique), et tu as une fonction qui est potentiellement définie pour tout type T sur lequel (ici), il existe un opérateur "<" (elle ne l'est réellement que quand tu l'"instancie" pour un type donné, c'est-à-dire quand tu l'utilise pour un type donné).
Si tu corriges un bug dans une des fonctions "dupliquées", il est souvent difficile d'être sûr que tu as bien corrigé le même bug dans tous les endroits où cette fonction est dupliquée. Avec un template, il n'y a qu'un seul endroit à corriger, puisque le code est unique.
Inconvénient des templates en C++ : Les présupposés sur le type générique ne sont pas explicités, ce qui est parfois gênant (les implicites sont souvent source de bugs). D'autres langages (comme Ada, par exemple) t'obligent à déclarer les présupposés sur ton type générique, ce qui est plus clair. Par ailleurs, C++ utilise aussi l'instanciation implicite des templates : utilisation d'un template instancié vaut déclaration, ce qui est dangereux. D'autres langages (oui, je sais, encore Ada, par exemple) obligent le programmeur à déclarer chaque instanciation ("je vais utiliser tel module ou telle fonction générique, appliqué à tel type" ) avant de pouvoir l'utiliser. Ce que je trouve plus sûr.
[edtdd]--Message édité par BifaceMcLeOD--[/edtdd]
Marsh Posté le 19-09-2001 à 11:17:25
Tt à fait d´accord avec BifaceMcLeOD les templates en C manquent cruellement d´une possibilité de pouvoir restreindre les types pouvant être utilisés.. Genre ds l´exemple être sûr de l´existence et du bon comportement de l´opérateur <..
Marsh Posté le 19-09-2001 à 22:54:57
En Ada, ça aurait donné :
Code :
|
De mémoire, car ça fait des années et des années que je n'ai pas fait d'Ada !
C'est certes un peu plus verbeux qu'en C++, mais ici, point d'implicite. Tout est écrit, il n'ya rien à deviner.
Et pour instancier tout ça :
Code :
|
[edtdd]--Message édité par BifaceMcLeOD--[/edtdd]
Marsh Posté le 18-09-2001 à 12:15:00
Quelqu'un peut m'expliquer brievement ce que c'est ?