Exercice 125
Énoncé
Créer un patron de fonctions permettant de calculer la somme d’un tableau
d’éléments de type quelconque, le nombre d’éléments du tableau étant fourni en
paramètre (on supposera que l’environnement utilisé accepte les « paramètres
expression »). Écrire un petit programme utilisant ce patron.
// définition du patron de fonctions
template T somme (T * tab, int nelem)
{ T som ;
int i ;
som = 0 ;
for (i=0 ; i
return som ;
}
// exemple d'utilisation
#include
using namespace std ;
main()
{ int ti[] = {3, 5, 2, 1} ;
float tf [] = {2.5, 3.2, 1.8} ;
char tc[] = { 'a', 'e', 'i', 'o', 'u' } ;
cout << somme (ti, 4) << "\n" ;
cout << somme (tf, 3) << "\n" ;
cout << somme (tc, 5) << "\n" ;
}
1. tel qu’il a été conçu, le patron somme ne peut être appliqué qu’à un type T pour lequel :
– l’opération d’addition a un sens ; cela signifie donc qu’il ne peut pas s’agir d’un
type pointeur ; il peut s’agir d’un type classe, à condition que cette dernière ait
surdéfini l’opérateur d’addition ;
– la déclaration T som est correcte ; cela signifie que si T est un type classe, il est
nécessaire qu'il dispose d'un constructeur sans argument ;
– l’affectation som = 0 est correcte ; cela signifie que si T est un type classe, il est
nécessaire qu’il ait surdéfini l’affectation.
À ce propos, notons qu’il est possible d’initialiser som lors de sa déclaration, en
procédant ainsi :
306
Énoncé
Créer un patron de fonctions permettant de calculer la somme d’un tableau
d’éléments de type quelconque, le nombre d’éléments du tableau étant fourni en
paramètre (on supposera que l’environnement utilisé accepte les « paramètres
expression »). Écrire un petit programme utilisant ce patron.
// définition du patron de fonctions
template
{ T som ;
int i ;
som = 0 ;
for (i=0 ; i
}
// exemple d'utilisation
#include
using namespace std ;
main()
{ int ti[] = {3, 5, 2, 1} ;
float tf [] = {2.5, 3.2, 1.8} ;
char tc[] = { 'a', 'e', 'i', 'o', 'u' } ;
cout << somme (ti, 4) << "\n" ;
cout << somme (tf, 3) << "\n" ;
cout << somme (tc, 5) << "\n" ;
}
1. tel qu’il a été conçu, le patron somme ne peut être appliqué qu’à un type T pour lequel :
– l’opération d’addition a un sens ; cela signifie donc qu’il ne peut pas s’agir d’un
type pointeur ; il peut s’agir d’un type classe, à condition que cette dernière ait
surdéfini l’opérateur d’addition ;
– la déclaration T som est correcte ; cela signifie que si T est un type classe, il est
nécessaire qu'il dispose d'un constructeur sans argument ;
– l’affectation som = 0 est correcte ; cela signifie que si T est un type classe, il est
nécessaire qu’il ait surdéfini l’affectation.
À ce propos, notons qu’il est possible d’initialiser som lors de sa déclaration, en
procédant ainsi :
306
