Exercice 127
Énoncé
Soit la définition suivante d’un patron de classes :
template class essai
{ T tab [n] ;
public :
essai (T) ; // constructeur
} ;
a. Donnez la définition du constructeur essai, en supposant :
• qu’elle est fournie « l'extérieur » de la définition précédente ;
• que le constructeur recopie la valeur reçue en argument dans chacun des
éléments du tableau tab .
b. Disposant ainsi de la définition précédente du patron essai, de son constructeur et
de ces déclarations :
const int n = 3 ;
int p = 5 ;
Quelles sont les instructions correctes et les classes instanciées ? On en fournira
(dans chaque cas) une définition équivalente sous la forme d’une « classe
ordinaire », c’est-à-dire dans laquelle la notion de paramètre a disparu.
essai ei (3) ; // I
essai ef (0.0) ; // II
essai ed (2.5) ; // III
a. La définition du constructeur est analogue à celle que l’on aurait écrite « en ligne » ;
il faut simplement « préfixer » son en-tête d’une liste de paramètres introduite par
template. De plus, il faut préfixer l’en-tête de la fonction membre du nom du patron
accompagné de ses paramètres (bien que cela soit redondant) :
template essai::essai(T a)
{ int i ;
for (i=0 ; i }
b. Appel I : correct.
class essai
{ int tab [10] ;
public :
essai (int) ; // constructeur
314
Précédent

- 315/398

Suivant