Vidéo: Leçon (12) - C++ : les opérateurs logiques (Programmation en C++) 2024
Les types de données intrinsic sont construits dans le langage C ++, comme int , float , et double et les différents types de pointeurs. C ++ permet au programmeur de définir les opérateurs pour les classes que le programmeur a créées en plus de ces opérateurs intrinsèques. C'est ce qu'on appelle la surcharge de l'opérateur .
Normalement, la surcharge de l'opérateur est facultative et n'est pas tentée par les programmeurs C ++ débutants. Beaucoup de programmeurs C ++ expérimentés ne pensent pas non plus que la surcharge des opérateurs est une excellente idée. Cependant, vous devrez apprendre à surcharger un opérateur: l'opérateur d'affectation.
Un opérateur n'est rien de plus qu'une fonction intégrée avec une syntaxe particulière. L'opération d'addition suivante
a + b
pourrait être comprise comme si elle était écrite
opérateur + (a, b)
En fait, C ++ donne à chaque opérateur un nom de style de fonction. Le nom fonctionnel d'un opérateur est le symbole de l'opérateur précédé du mot clé operator et suivi des types d'arguments appropriés. Par exemple, l'opérateur + qui ajoute un int à un int générant un int est appelé int operator + (int, int).
Tout opérateur existant peut être défini pour une classe définie par l'utilisateur. Ainsi, je pourrais créer un opérateur Complex * (const Complex &, const Complex &) qui me permettrait de multiplier deux objets de type Complex . Le nouvel opérateur peut avoir la même sémantique que l'opérateur qu'il surcharge, mais il n'est pas obligé de le faire. Les règles suivantes s'appliquent lors de la surcharge des opérateurs:
-
Le programmeur ne peut pas surcharger . (point), :: (deux points), . *, * ->, sizeof et ?: opérateurs (ternaires).
-
Le programmeur ne peut pas inventer un nouvel opérateur. Par exemple, vous ne pouvez pas inventer l'opération x $ y .
-
La syntaxe d'un opérateur ne peut pas être modifiée. Ainsi, vous ne pouvez pas définir une opération% i car% est déjà défini en tant qu'opérateur binaire.
-
La priorité de l'opérateur ne peut pas changer. Un programme ne peut pas forcer l'opérateur + à être évalué avant l'opérateur * .
-
Les opérateurs ne peuvent pas être redéfinis lorsqu'ils sont appliqués à des types intrinsèques - vous ne pouvez pas changer la signification de 1 + 2. Les opérateurs existants ne peuvent être surchargés que pour les types nouvellement définis.
Les opérateurs surchargés sont une de ces choses qui semblent être une bien meilleure idée que ça en réalité. Habituellement, la surcharge de l'opérateur introduit plus de problèmes qu'elle n'en résout.