C ++: la comparaison des fonctions des opérateurs

La intrinsèque les types de données sont intégrés dans la langue correspondante C, tel que int, flotteur, et double et les différents types de pointeurs. C ++ permet au programmeur de définir les catégories pour les opérateurs que le programmeur a créé, en plus de ces opérateurs intrinsèques. C'est appelé surcharge de l'opérateur.

Normalement, la surcharge d'opérateur est facultative et ne tente pas en commençant par les programmeurs C ++. Un grand nombre de programmeurs C ++ expérimentés ne pense pas que la surcharge d'opérateur est une bonne idée non plus. Cependant, vous devrez apprendre à surcharger un opérateur: l'opérateur d'affectation.

Un opérateur est rien de plus qu'une fonction intégrée avec une syntaxe particulière. L'opération d'addition suivant

a + b

pourrait être comprise comme si elle avait été écrite




opérateur + (a, b)

En fait, C ++ donne chaque opérateur un nom de style fonction. Le nom fonctionnel d'un opérateur est le symbole de l'opérateur précédée par le mot-clé opérateur et suivie par les types d'arguments appropriés. Par exemple, la + un opérateur qui ajoute int à un int générer un int est appelé int opérateur + (int, int).

Tout opérateur existant peut être défini pour une classe définie par l'utilisateur. Ainsi, je pouvais créer un Complexe opérateur * (de const complexe, complexe const) qui me permettrait de multiplier deux objets de type Complexe. Le nouvel opérateur peut avoir la même sémantique que l'opérateur surchargeant, mais il n'a pas à. Les règles suivantes sont applicables en cas de surcharge des opérateurs:

  • Le programmeur ne peut pas surcharger le . (dot), :: (côlon), .*, * ->, Sizeof et ?: (ternaires) opérateurs.

  • 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 changé. Ainsi, vous ne pouvez pas définir une opération %je car % est déjà défini comme un opérateur binaire.

  • La priorité de l'opérateur ne peut pas changer. Un programme ne peut pas forcer opérateur + avant d'être évalués opérateur *.

  • Les opérateurs ne peuvent pas être redéfinies lorsqu'il est appliqué à des types intrinsèques - vous ne pouvez pas changer le sens de 1 + 2. opérateurs existants peuvent être surchargé uniquement pour les types nouvellement définies.

Surcharge des opérateurs est une de ces choses qui ressemble à une bien meilleure idée qu'elle ne l'est vraiment. Habituellement, la surcharge d'opérateur introduit plus de problèmes qu'elle en résout.


» » » » C ++: la comparaison des fonctions des opérateurs