/************* déclaration de la classe set_int *********/
class set_int : public set
{ public :
// envoi ensemble dans un flot
friend ostream & operator << (ostream &, set_int &) ;
} ;
/************* définition de la classe set_int *********/
ostream & operator << (ostream & sortie, set_int & e) // voir remarque 1
{ sortie << "[ " ;
set::iterator ie ;
for (ie=e.begin() ; ie!=e.end() ; ie++)
sortie << *ie << " " ;
sortie << "]" ;
return sortie ;
}
/************* test de la classe set_int *********/
main()
{
void fct (set_int) ;
void fctref (set_int &) ;
set_int ens ;
cout << "donnez 10 entiers \n" ;
int i, n ;
for (i=0 ; i<10 ; i++)
{ cin >> n ;
ens.insert(n) ;
}
cout << "il y a : " << ens.size() << " entiers differents\n" ;
cout << "qui forment l\'ensemble : " << ens << "\n" ;
fct (ens) ;
cout << "au retour de fct, il y en a " << ens.size() << "\n" ;
cout << "qui forment l\'ensemble : " << ens << "\n" ;
fctref (ens) ;
cout << "au retour de fctref, il y en a " << ens.size() << "\n" ;
cout << "qui forment l\'ensemble : " << ens << "\n" ;
cout << "appartenance de -1 : " << ens.count(-1) << "\n" ;
cout << "appartenance de 500 : " << ens.count(500) << "\n" ;
set_int ensa, ensb ;
ensa = ensb = ens ;
cout << "ensemble a : " << ensa << "\n" ;
cout << "ensemble b : " << ensb << "\n" ;
}
void fct (set_int e)
{ cout << "ensemble reçu par fct : " << e << "\n" ;
e.insert(-1) ; e.insert(-2) ; e.insert(-3) ;
}
void fctref (set_int & e)
{ cout << "ensemble reçu par fctref : " << e << "\n" ;
e.insert(-1) ; e.insert(-2) ; e.insert(-3) ;
}
1. Certains environnements imposent que l’on mentionne l’espace de nom std dans la
surdéfinition de l’opérateur << en écrivant std::operator <<.
2. Ici, il n’est pas nécessaire de redéfinir l’affectation ou le constructeur par recopie.
En effet, compte tenu des règles relatives à l’héritage, les fonctions par défaut
appellent bien les fonctions voulues dans la classe de base ; cela suffit ici puisque la
classe dérivée n’introduit aucune partie dynamique supplémentaire.
389
Précédent

- 390/398

Suivant