Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
semantique_d_entite [2015/02/16 16:24] woly [Opérateurs de comparaison] |
semantique_d_entite [2018/07/20 23:36] (Version actuelle) winjerome Ajout du lien vers la chapitre suivant |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^ | + | ^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ [[heritage|Chapitre suivant]] ^ |
====== La sémantique d'entité ====== | ====== La sémantique d'entité ====== | ||
Ligne 136: | Ligne 136: | ||
</code> | </code> | ||
- | Il est donc préférable de désactiver explicitement ces opérations, pour éviter de réaliser ces tests. Comme par défaut, seul les opérateurs ''=='' et ''!='' sont définies, il faut les désactiver. | ||
- | |||
- | <code cpp> | ||
- | class MyClass { | ||
- | public: | ||
- | bool operator==(MyClass const&) = delete; | ||
- | bool operator!=(MyClass const&) = delete; | ||
- | }; | ||
- | </code> | ||
<note info>On pourrait penser que puisque ces tests ne posent pas de problèmes particuliers, on pourrait quand même les conserver, même s'ils retournent un résultat prévisible. En pratique, avec la notion d'héritage que vous verrez dans le prochain chapitre, l'implémentation de ces fonctions n'est pas trivial. Il est donc pertinent de les désactiver, pour éviter les problèmes de comparaison que poserait les fonctions créées par défaut par le compilateur. | <note info>On pourrait penser que puisque ces tests ne posent pas de problèmes particuliers, on pourrait quand même les conserver, même s'ils retournent un résultat prévisible. En pratique, avec la notion d'héritage que vous verrez dans le prochain chapitre, l'implémentation de ces fonctions n'est pas trivial. Il est donc pertinent de les désactiver, pour éviter les problèmes de comparaison que poserait les fonctions créées par défaut par le compilateur. | ||
Ligne 158: | Ligne 149: | ||
On voit que les classes à sémantique d'entité interdisent de nombreuses fonctions de base que l'on a rencontré dans les classes à sémantiques de valeur (redéfinir des opérateurs de comparaison ou des opérateurs arithmétiques). L'intérêt de cette sémantique sera qu'elle autorise l'héritage de classe, que nous allons voir dans le prochain chapitre. | On voit que les classes à sémantique d'entité interdisent de nombreuses fonctions de base que l'on a rencontré dans les classes à sémantiques de valeur (redéfinir des opérateurs de comparaison ou des opérateurs arithmétiques). L'intérêt de cette sémantique sera qu'elle autorise l'héritage de classe, que nous allons voir dans le prochain chapitre. | ||
- | ^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^ | + | ^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ [[heritage|Chapitre suivant]] ^ |
{{tag> Cours C++}} | {{tag> Cours C++}} |