stack_int (ce qui est ici le cas des types entiers ou flottants ; voir le chapitre relatif
aux conversions définies par l’utilisateur).
2. En revanche, il n’est pas nécessaire que l’argument de operator= soit transmis par
référence. Si l’on souhaitait pouvoir affecter des objets constants, il faudrait ajouter
le qualificatif const ; dans ce cas, on pourrait alors, du même coup, affecter des
expressions d’un type convertible dans le type stack_int, c’est-à-dire ici d’un type
entier ou flottant (voir le chapitre relatif aux conversions définies par l’utilisateur).
3. L’opérateur >> doit absolument recevoir son deuxième opérande par référence,
puisqu’il doit pouvoir en modifier la valeur.
Voici la définition des fonctions membre de stack_int :
#include "stack-int.h"
stack_int::stack_int (int n)
{ nmax = n ;
adv = new int [nmax] ;
nelem = 0 ;
}
stack_int::~stack_int ()
{ delete adv ;
}
stack_int::stack_int (stack_int & p)
{ nmax = p.nmax ; nelem = p.nelem ;
adv = new int [nmax] ;
int i ;
for (i=0 ; i
adv[i] = p.adv[i] ;
}
void stack_int::operator = (stack_int & p)
{ cout << "*** Tentative d'affectation entre piles - arrêt exécution ***\n" ;
exit (1) ;
}
stack_int & stack_int::operator << (int n)
{ if (nelem < nmax) adv[nelem++] = n ;
return (*this) ;
}
stack_int & stack_int::operator >> (int & n)
{ if (nelem > 0) n = adv[--nelem] ;
return (*this) ;
}
int stack_int::operator ++ ()
{ return (nelem == nmax) ;
}
int stack_int::operator -- ()
{ return (nelem == 0) ;
}
À titre indicatif, voici un petit programme d’utilisation de notre classe, accompagné
d’un exemple d’exécution :
/************ programme d'essai de stack_int *********/
#include "stack_int.h"
#include
using namespace std ;
main()
{ void fct (stack_int) ;
222
aux conversions définies par l’utilisateur).
2. En revanche, il n’est pas nécessaire que l’argument de operator= soit transmis par
référence. Si l’on souhaitait pouvoir affecter des objets constants, il faudrait ajouter
le qualificatif const ; dans ce cas, on pourrait alors, du même coup, affecter des
expressions d’un type convertible dans le type stack_int, c’est-à-dire ici d’un type
entier ou flottant (voir le chapitre relatif aux conversions définies par l’utilisateur).
3. L’opérateur >> doit absolument recevoir son deuxième opérande par référence,
puisqu’il doit pouvoir en modifier la valeur.
Voici la définition des fonctions membre de stack_int :
#include "stack-int.h"
stack_int::stack_int (int n)
{ nmax = n ;
adv = new int [nmax] ;
nelem = 0 ;
}
stack_int::~stack_int ()
{ delete adv ;
}
stack_int::stack_int (stack_int & p)
{ nmax = p.nmax ; nelem = p.nelem ;
adv = new int [nmax] ;
int i ;
for (i=0 ; i
}
void stack_int::operator = (stack_int & p)
{ cout << "*** Tentative d'affectation entre piles - arrêt exécution ***\n" ;
exit (1) ;
}
stack_int & stack_int::operator << (int n)
{ if (nelem < nmax) adv[nelem++] = n ;
return (*this) ;
}
stack_int & stack_int::operator >> (int & n)
{ if (nelem > 0) n = adv[--nelem] ;
return (*this) ;
}
int stack_int::operator ++ ()
{ return (nelem == nmax) ;
}
int stack_int::operator -- ()
{ return (nelem == 0) ;
}
À titre indicatif, voici un petit programme d’utilisation de notre classe, accompagné
d’un exemple d’exécution :
/************ programme d'essai de stack_int *********/
#include "stack_int.h"
#include
using namespace std ;
main()
{ void fct (stack_int) ;
222
