CSI2772 - Concepts avancés de programmation en C++

Version Imprimable

VIII - Types abstraits de données

1. L'horloge (version 1)




Haut de la page

2. L'horloge (version 2)



Haut de la page

3. L'horloge (version 3)

3.1. Arité, priorité, ordre d'évaluation
On ne peut pas changer:
  • Arité : binaire vs unaire
  • Priorité a + b * c --> a + (b * c)
  • Ordre d’évaluation a + b + c --> (a + b) + c
3.2. Redéfinition d'un opérateur
2 options:

1. Dans une méthode
a + b => a.operator+(b)
  • a devient le this
  • b est le second opérande dans une opération binaire
2. Dans une fonction
a + b => operator+(a,b)
  • a et b sont tous les deux des arguments
Dans les deux cas, les arguments (b pour dans une méthode, a et b pour dans une fonction) peuvent faire l'objet de conversion automatique.
Les deux versions sont exclusives (ne peuvent être définies en même temps.

3.3. Exécution d'une opération
  1. transmmettre les opérandes
  2. effectuer l'opération
  3. retourner le résultat (dans une variable anonyme)
  4. effectuer l'affectation (=)
  5. détruire la variable anonyme



Haut de la page

4. Opérateur = et conversion vers les types primitifs

Les seules méthodes qui sont générées automatiquement sont le constructeur copieur et l'opérateur =



Haut de la page

5. Construction et destruction des types




Haut de la page

6. Le sac




Haut de la page

7. Itérateur de sac





Haut de la page

8. La promotion des types


Haut de la page

Collaboratrices: Emilie Lavigne et Sophie-Catherine Jeaurond